02 2019 档案
摘要:备忘录模式 在不破坏封装性的前提下,捕获一个对象内部的状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。 类结构图 Originator 负责创建一个备忘录 Memento,用以记录当前时刻它的内部状态,并可使用备忘录恢复内部状态,Originator 可根据需要决定 Me
阅读全文
摘要:适配器模式 将一个类的接口转换成客户希望的另外一个接口。Adapter 模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 Adapter 模式的宗旨:保留现有类所提供的服务,向客户提供接口,以满足客户的期望。 首先应该明白一点,适配器是最后的补救措施,应该在功能设计的时候尽量避免。所以
阅读全文
摘要:状态模式 当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。 上面是百度百科的解释,看起来有点难以理解其实可以理解为:它说当状态改变时,这个对象的行为也会变,而看起来就像是这个类改变了一样。 类结构图 Context 含有状态的类,维护一个 State 的实例。 State 状
阅读全文
摘要:抽象工厂模式 提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们的具体类。 类结构图 Creator 抽象工厂接口,里面应该包括所有的产品创建的抽象方法。 ConcreteCreator1、ConcreteCreator2 具体的工厂,创建具有特定实现的产品对象。 ProductA、Prod
阅读全文
摘要:观察者模式 观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有的观察者对象,使它们能够自己更新自己。 **简单点概括就是:**一个类管理着所有依赖于它的观察者类,并且在这个类自身发生变化的时候主动给依赖于它的观察者类发出通知。 结构
阅读全文
摘要:建造者模式 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 类结构图 Director 构建一个使用 Builder 接口的对象。 Builder 为创建一个产品对象各个部件指定的抽象接口。 ConncreteBuilder 具体的建造者,需实现 Builder 接口,构
阅读全文
摘要:外观模式 外观模式(Facade),为子系统中的一组接口提供一个一致的界面,定义一个高层接口,这个接口使得这一子系统更加容易使用。 类结构图 Facade 外观类,知道哪些子系统类负责处理请求,将 Client的请求代理给适当的子系统对象。 子系统角色 实现具体的功能类,处理 Facade 对象指派
阅读全文
摘要:模板方法模式 定义一个操作中的算法骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 结构图 应用 比如把大象放入冰箱需要3步 打开冰箱门 把大象塞进去 关上冰箱门 代码实现 public class Elephant { public void
阅读全文
摘要:原型模式 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 结构图 Prototype:原型类,声明一个克隆自身的接口 ConcretePrototype:具体原型类,实现一个克隆自身的操作 Client:客户端,让一个原型克隆自身从而创建一个新的对象 代码实现 public cla
阅读全文
摘要:上一章我们学习了静态代理,举个栗子比如我想在一批Controller里进行入参和出参的打印。那么静态代理就会创建若干个Controller的代理类。 再比如我除了要出参入参打印,我还需要在出参入参之后在打印出每个函数的耗时,那么就需要重新在每个函数里在加上耗时的日志打印。动态代理则会帮我们省了很多代
阅读全文