设计模式学习之门面模式

来源:互联网 发布:2018年4月1日 知乎 编辑:程序博客网 时间:2024/05/18 09:19

就象字面含义一样,门面模式的作用是为了简化用户对一系列相关对象及操作的使用。比如用户买包子,馒头一样,用户并不需要知道包子,馒头的制造过程和细节,也不需要进入厨房,而只需要在门面,向服务员进行购买,拿包子,找钱,打包的事情都有服务员来完成,用户最后只需要得到要买的东西和找零的钱即可。门面模式将一系列复杂而相关的操作封装成一个简单的操作接口。比如就编译子系统来说,有很多的操作如,词法扫描、语法分析等,这些操作都由不同的对象来负责。
但对于编译系统来说,它不需要知道这些子系统的具体实现细节,它关心的是怎样完成编译操作。这时,我们就可以为编译系统定义一个简单的接口,由这个接口来组合负责相关操作的对象来协同工作,完成编译工作。

门面模式的核心是为了简化操作接口,使系统变得易用。

下面是个例子:

#endregion/// <summary>/// Facade 的摘要说明。/// </summary>public class Facade{  public Facade()  {   //   // TODO: 在此处添加构造函数逻辑   //  }  public  void DoSomething()  {   Facade_Opt1 opt1 = new Facade_Opt1();   Facade_Opt2 opt2 = new Facade_Opt2();   Facade_Opt3 opt3 = new Facade_Opt3();   opt1.DoSomething();   opt2.DoSomething();   opt3.DoSomething();  }}public class Facade_Opt1{  public void DoSomething()  {   ;  }}public class Facade_Opt2{  public void DoSomething()  {   ;  }}public class Facade_Opt3{  public void DoSomething()  {   ;  }}


 

门面模式没有相对固定的结构模式,但在设计中十分常用,特别是用户交互设计中。用户不需要知道系统内部的处理业务逻辑的细节,而只关心输入和结果是否正确。比如数据库连接,用户只需要填入用户名和密码,然后调用一个接口进行连接,至于数据库连接的过程,如密码加密,解密,所采用的数据库链路之类的,用户一般都不会关心,而由门面服务来完成。

门面模式也为一系列服务对象提供不同的服务提供了一种组合途径。

与其它模式的关系:

1)代理模式:两种模式都起到一种“代理”的作用。代理模式是为一个对象提供一种控制访问该对象的一种机制,并不改变对象的接口。而门面模式是为一系列相关的对象的访问,提供一种简化的访问接口,代理对象需要实现被代理者的接口,而门面模式的门面对象则不需要。

2)代理模式,装饰模式,策略模式,桥模式等都是为了增加或者改变对象的功能或者行为,而且改变的对象都是一类的。而门面模式并不改变对象的接口和功能,只是对外提供一种新的简化了的接口,对内则协调各个对象之间的操作。

3)适配器模式改变了对象的接口,起到了标准兼容的作用,门面模式从外面看,也改变了访问这些对象的方式,但门面模式并不改变某个对象的接口,提供的访问接口只是为了简化对这一系列对象的访问。门面模式提供了一种协同工作的方式。

 

后记:门面模式的根本动力在于,我们在设计中为了共用或者复用,底层的很多业务逻辑(可以看做是零件逻辑)并不单纯只是为了某个特定的应用,为了公用或者复用,显得碎化,再提供给外部使用的时候,就需要根据需要进行组装,为了减少用户对这个组装的依赖,往往提供一系列的组合接口(也就是门面接口)给外部使用。门面模式在实际生活中处处可见,组件化编程其实也源于这种思想。制造业中零件-组件-成品的制造过程也是这种思想的体现,而且提供了很大的灵活性。当然,为了支持这种设计模式,底层的零件逻辑或者是组件逻辑需要分割合理,接口要标准,而且在连接和事务处理方面也要考虑周详。

本文转自:http://blog.csdn.net/hawksoft/article/details/6639626

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 四岁的宝宝突然不怎么吃饭怎么办 1岁7个月宝宝突然不爱吃饭怎么办 宝宝发烧好了之后不吃辅食怎么办 吃母乳的宝宝不喝奶粉怎么办 奶水不足宝宝又不喝奶粉怎么办 6个月宝宝断奶哭闹不用奶瓶怎么办 小孩不爱吃饭怎么办该吃些什么 二个月宝宝只认母乳不喝牛奶怎么办 满月宝宝只认奶粉不认母乳怎么办 宝宝四个月只认奶瓶不认母乳怎么办 新生儿只认奶瓶不认母乳怎么办 7个月宝宝不吃辅食怎么办 8个月小孩不吃辅食怎么办 9个月小孩不吃辅食怎么办 十一个月宝宝拉肚子拉水怎么办 小孩好动上课也坐不住会怎么办 幼儿大班关于环保的手抄报怎么办 捷达车打开丝位子风扇总转怎么办 小班个案分析:好动的孩子该怎么办 孩子突然过于的兴奋不睡觉是怎么办 刚出生的宝宝听力未通过怎么办 孩子多动症被老师打不上学怎么办 小孩在校被学生打家长该怎么办? 8岁儿童好动上课不注意听课怎么办 怀孕第一个月喝了啤酒怎么办 不知道自己怀孕喝了酒怎么办 怀孕一个月不知道喝酒了怎么办 老师说孩子上课不专心听讲怎么办 二年级孩子上课不认真听讲怎么办 二年级的孩子浮躁上课不认真怎么办 三年级的小孩上课不认真听讲怎么办 大班孩子上课不专心听讲玩怎么办 老师跟家长说小孩上课讲话怎么办 别的家长动手打自己的孩子怎么办? 一岁3个月宝宝骨龄偏小怎么办 宝宝9个月了越来越粘人怎么办? 孩子突然说话结巴口吃了怎么办啊 很久不说话了不敢说话了怎么办 宝宝2岁了还不会说话怎么办 2岁的宝宝还不会说话怎么办 小宝宝有四个月了母乳不够吃怎么办