Facade(外观)--对象结构型模式

意图
为子系统的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更容易使用
 
适用性
  1. 当你要为一个复杂子系统提供一个简单接口时。
  2. 客户程序与抽象类的实现部分之间存在着很大的依赖性。
  3. 当你需要构建一个层次结构的子系统时,使用facade模式定义子系统中每层的入口点。
 
结构
 

设计模式--Facade,Mediator,Singleton_Singleton

 
协作
  1. facade对客户屏蔽子系统组件,因而减少了客户处理的对象的数目并使得子系统使用起来更加方便。
  2. facade实现了子系统与客户之间的松耦合关系,而子系统内部的功能组件往往是紧耦合的。
  3. 如果应用需要,facade并不限制使用子系统类。因此你可以在系统易用性和通用性之间加以选择。
 
实现问题
  1. 降低客户-子系统之间的耦合度
  2. 公共子系统和私有子系统类
 
mediator模式与facade模式的相似之处是,它抽象了一些已有的类的功能。然而,mediator的目的是对同事之间的任意通讯进行抽象,通常集中不属于任何单个对象的功能。mediator的同事对象知道中介者并与它通信,而不是直接与其他同类对象通信。相对而言,Facade模式仅对子系统对象的接口进行抽象,从而使它们更容易使用;它并不定义新功能,子系统也不知道facade的存在。
 
 
Mediator(中介者)--对象行为型模式
意图:
用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间地交互。
 
适用性
  1. 一组对象以定义良好但是复杂的方式进行通信。产生地依赖关系混乱且难以理解。
  2. 一个对象引用其他很多对象并且直接与这些对象通信,导致难以复用该对象。
  3. 想定制一个分布在多个类中地行为,而又不想生成太多地子类。
 
结构
 

设计模式--Facade,Mediator,Singleton_Singleton_02

 
效果
  1. 减少了子类生成
  2. 它将各Colleague解藕
  3. 它简化了对象协议
  4. 它对对象如何协作进行了抽象
  5. 它使控制集中化
 
实现
  1. 忽略抽象地Mediator类
  2. Colleague--Mediator通信
 
Facade模式是以明显且受限地方式来施加它的策略,而Mediator模式则是以隐藏且不受限的方式施加它的策略。
 
Singleton模式
关于这个模式是在什么都不想记了,南京瞬连两次以这个问题来面试。
singleton两种方式,一种是类初始化,一种是在instance()种初始化。
 
Monostate模式
mono+state单一状态,通过把所有属性定义为static,来实现state单一,不论实例化多少对象,属性总是唯一的。这个模式不在GOF的23个模式中。