摘要:
策略模式属于对象的行为模式,其用意就是针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。策略模式使得算法可以在不影响客户端的情况下发生变化。策略模式 是对算法的包装,是把使用算法的责任和算法本身分割开,委派给不同的对象管理。策略模式通常把一个系列的算法包装到一系列的策略类里,作为一个抽象策略类的子类。这个模式涉及三个角色:1.环境(Context)角色:持有一个Strategy类的引用2.抽象策略(Strategy)角色:抽象角色,通常由一个接口或抽象类实现,此角色给出所有具体策略类所需要的接口3.具体策略(ConcreteStrategy)角色:包装了相关的 阅读全文
摘要:
行为模式(Behavioral Pattern)是对在不同的对象之间划分责任和算法的抽象化。行为模式不仅仅是关于类和对象的,而且是关于它们之间的相互作用的。行为模式分为类的行为模式和对象的行为模式两种:1.类的行为模式:类的行为模式使用类继承关系在几个类之间分配行为2.对象的的行为模式:对象的行为模式则使用对象的聚合来分配行为。行为模式包括:不变模式,策略模式,模版方法模式,观察者模式,迭代子模式,责任链模式,命令模式,备忘录模式,状态模式,访问者模式,解释器模式,调停者模式等。不变模式:一个对象的状态在对象被创建之后就不再变化,这就是所谓的不蛮模式(Immutable Pattern)不变模 阅读全文
摘要:
桥梁模式的用意是“将抽象化与实现化脱耦,使得二者可以独立地变化”所谓脱耦,就是两个实体的行为的某种强关联。而将它们的强关联去掉,就是耦合的解脱或称为脱耦。或者说,将它们之间的强关联改换成弱关联。所强关联,就是在编译时期已经确定的,无法在运行期间动态改变的关联。所谓弱关联,就是可以动态地确定并且可以在运行时期动态地改变的关联。在java语言中,类继承关系是强关联,而聚合有关系是弱关联。桥梁模式中的所谓脱耦,就是指在一个软件系统的抽象化和实现化之间使用组合/聚合关系而不是继承关系,从而使两者可以相对独立地变化。这就是桥梁模式的用意。桥梁模式的系统含有两个等级结构:1.由抽象化角色和修正抽象化角色组 阅读全文
摘要:
门面模式是对象的结构模式,外部与一个子系统的通信必须通过一个统一的门面(Facade)对象进行,这就是门面模式。角色:1.门面角色:客户端可以调用这个角色的方法。此角色知晓相关的一个或多个子系统的功能和责任。在正常情况下,本角色会将所有从客户端的请求委派到子系统去2.子系统角色:可以同时有一个或多个子系统。每一个子系统都不是一个单独的类,而是一个类的集合。每一个子系统都可以被客户端直接调用,或者被门面角色调用。子系统并不知道门面的存在,对于子系统而言,门面仅仅是另外一个客户端而已。类似于医院中设计一个接待员的话(超级无敌全知道)什么情况下使用门面模式?1.为一个复杂子系统提供一个简单接口子系统 阅读全文
摘要:
享元模式是对象的结构模式,享元模式以共享的方式高效地支持大量的细粒度对象。享元对象能做到共享的关键区分内蕴状态和外蕴状态。一个内蕴状态是存储在享元对象内部的,并且是不会随着环境改变而有所不同,因此,一个享元可以具有内蕴状态并可以共享。一个外蕴状态是随着环境改变而改变,不可以共享的状态。享元对象 的外蕴状态必须由客户端保存,并在享元对象被创建之后,在需要使用的时候再传入到享元对象内部。外蕴状态不可以影响享元对象的内蕴状态。换句话说,它们是相互独立的。根据所涉及的享元对象的内部表象,享元模式可以分成单纯享元模式和复合享元模式。单纯享元模式:在单纯享元模式中,所有的享元对象都是可以共享的。单纯享元模 阅读全文