桥梁模式(Bridge Pattern)
定义:Decouple an abstraction from its implementation so that the two can vary independently.(将抽象和实现解耦,使得两者可以独立地变化。)
桥梁模式的优点:
- 抽象和实现分离;
- 优秀的扩充能力;
- 实现细节对客户透明。
桥梁模式的使用场景:
- 不希望或不适用使用继承的场景;
- 接口或抽象类不稳定的场景;
- 重用性要求较高的场景。
桥梁模式(Bridge Pattern)
定义:Decouple an abstraction from its implementation so that the two can vary independently.(将抽象和实现解耦,使得两者可以独立地变化。)
桥梁模式的优点:
桥梁模式的使用场景:
享元模式(Flyweight Pattern)
定义:Use sharing to support large numbers of fine-grained objects efficiently.(使用共享对象可有效地支持大量的细粒度的对象。)
要求细粒度对象,那么不可避免地使得对象数量多切性质相近,那我们就将这些对象的信息分为两个部分:内部状态(intrinsic)与外部状态(extrinsic)。
解释器模式(Interpreter Pattern)
Given a language, define a representation for its grammer along with an interpreter that uses the representation to interpret sentences in the language.(给定一门语言,定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中的句子)
解释器模式优点:它最显著的优点就是扩展性,修改语法规则只要修改相应的非终结符表达式就可以了,若扩展语法,则只要增加非终结符类就可以了。
解释器模式缺点:
解释器模式使用场景:
双接口设计,我们的一个类可以实现多个接口,在系统设计时,如果考虑对象的安全问题,则可以提供两个接口,一个是业务的正常接口,实现必要的业务逻辑,叫做宽接口;另外一个接口是一个空接口,说明方法都没有,其目的是提供给子系统外的模块访问,比如容器对象,这个叫做窄接口,由于窄接口中没有提供任何操纵数据的方法,因此相对来说比较安全。
状态模式
定义:Allow an object to alter its behavior when its internal state changes. The object will appear to change its class.(当一个对象在状态改变时允许其改变行为,这个对象看起来像改变了其类。)
状态模式的优点:
状态模式的缺点:
状态模式的使用场景:
访问者模式(Visitor Pattern)
定义:Represent an operation to be performed on the elements of an object structure. Visitor lets you define a new operation without changing the classes of the elements on which it operates.(封装一些作用于某些数据结构中的各元素的操作,它可以在不改变数据结构的前提下定义作用于这些元素的新的操作。)
访问者模式的优点:
访问者模式的缺点:
访问者模式的使用场景:
备忘录模式(Memento Pattern)
定义:Without violating encapsulation, capture and externalize an object,s internal state so that the object can be restored to this state later.(在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。)
备忘录模式的使用场景:
门面模式(Facade Pattern)
定义:Provide a unified interface to a set of interfaces in a subsystem. Facade defines a higher-level interface that makes the subsystem easier to use.(要求一个子系统的外部与其内部的通信必须通过一个统一的对象进行。门面模式提供一个高层次的接口,使子系统更易于使用。)
门面模式的优点:
门面模式的缺点:
门面模式的使用场景:
观察者模式(Observer Pattern)
也叫做发布订阅模式(Publish/subscribe)
定义:Define a one-to-many dependency between objects so that when one object changes state, all its dependents are notified and updated automatically.(定义对象间一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并被自动更新。)
观察者模式的优点:
观察者模式的缺点:
观察者模式的使用场景:
观察者模式的注意事项:
Java中的观察者类:
系统设计中会对观察者模式进行改造或改装,主要在以下3个方面:
在实际项目和生活中经常发生的例子:
组合模式(Composite Pattern)
也叫合成模式,有时又叫做部分-整体模式(Part-Whole)
定义:Compose objects into tree structures to represent part-whole hierarchies. Composite lets clients treat individual objects and compositions of objects uniformly.(将对象组合成树形结构以表示“部分-整体”的层次结构,使得用户对单个对象和组合对象的使用具有一致性。)
组合模式的优点:
组合模式的使用场景: