门面模式(Facade)
Facade模式的几个要点
从客户程序的角度来看,Facade模式不仅简化了整个组件系统的接口,同时对于组件内部与外部客户程序来说,从某种程度上也达到了一种“解耦”的效果——内部子系统的任何变化不会影响到Facade接口的变化。
Facade设计模式更注重从架构的层次去看整个系统,而不是单个类的层次。Facade很多时候更是一种架构设计模式。
模式结构
Facade
° 知道哪些子系统类负责处理请求
° 将客户的请求代理给相应的子系统对象
Subsystem Classes
° 实现子系统的功能
° 处理由Facade对象指派的任务来协调子系统下各子类的调用方式
在外观模式中,外观类Facade的方法OptionWrapper实现的就是以不同的次序调用下面类SubSystem1、SubSystem2的方法Operation,通过不同的Operation组合实现装饰功能。
模式图例
假设我们需要开发一个坦克模拟系统用于模拟坦克车在各种作战环境中的行为,其中坦克系统由引擎、控制器、车轮、车身等各子系统构成。
代码
public class BodyWork
{
public void BAction()
{
Console.WriteLine("车身");
}
}
public class Controller
{
public void CAction()
{
Console.WriteLine("车身");
}
}
public class Enigine
{
public void EAction()
{
Console.WriteLine("引擎");
}
}
public class Wheel
{
public void WAction()
{
Console.WriteLine("车轮");
}
}
public class Tank
{
private BodyWork _bodyWork;
private Enigine _enigine;
private Controller _controller;
private Wheel _wheel;
public Tank()
{
_bodyWork = new BodyWork();
_enigine = new Enigine();
_controller = new Controller();
_wheel = new Wheel();
}
public void MethodA()
{
_bodyWork.BAction();
_enigine.EAction();
_controller.CAction();
_wheel.WAction();
}
}

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
Flutter新锐专家之路:混合开发篇
作者:闲鱼技术-正物 本篇是此系列的第二篇,重点介绍如何让Flutter能够开发,实现业务需求。这部分包括:混合栈的管理,混合下的能力补齐和包管理。 混合栈的管理 引入Flutter之后,我们首要面临的问题便是混合栈的管理。如我们首先实践的是商品详情页,则有一个常见的应用场景:首页->详情页->详情页(猜你喜欢点击)->会话页->详情页(会话顶部点击)。如何去解决这种Native 与Flutter任意嵌套的问题呢? 解决方案应具有以下特点: a.每一个页面都有一个VC(Activity),保证所有基于VC(Activity)生命周期的逻辑(如埋点等)照常工作 b.不同的Flutter页面之间可以正常通信,共享数据 c.Native可以调起任意的Flutter页面,无论是首次打开还是之后 d.资源占用尽可能少,性能尽可能好 e
-
下一篇
redis集群(二)搭建集群基本架构
1.集群搭建的过程: meet通信: 2.redis cluster原生命令的安装 (1)配置开启节点 (2)meet,节点握手 (3)指派槽、 (4)主从 (1)配置节点 (2)meet (3)分配槽 将7003,7004,7005分别设置成7000,7001,7002的从节点 3.集群搭建(linux) (1)开启配置 配置文件内容如下: 修改集群内所有节点的配置文件 启动各个redis节点: 查看是否启动? cluster-config-file;配置集群的配置文件,里面包含了集群节点的ID等信息。节点ID不同于运行ID,节点ID在集群初始化时只,创建一次,节点重启的时候不会改改变,而运行时ID会改变。 (2)节点握手 节点握手:一批运行在集群模式下的节点通过Gossip协议彼此通信,达到感知对方的过程。 运行命令:cluster meet {ip} {port} 查看集群信息,显示已经有6个节点了 (3)分配槽:在客户端上输入cluster addslots 槽编号;采用bash脚本实现; 将0~16383个槽平均分给三个节点,形成三个一主一从的结构 其余节点类似操...
相关文章
文章评论
共有0条评论来说两句吧...