设计模式
文章平均质量分 66
LoLogan
守正笃实,久久为功
展开
-
代理模式
代理模式1. UML类图2. 通用代码3. 优点4. 普通代理和强制代理4.1 普通代理4.2 强制代理5. 动态代理代理模式为其他对象提供一种代理以控制对这个对象的访问1. UML类图2. 通用代码聚合式的代理,产生该代理的实例,然后把被代理者的通过构造函数传递进来//抽象主题类public interface Sub...原创 2018-02-27 10:51:46 · 98 阅读 · 0 评论 -
备忘录模式
备忘录模式UML类图定义通用代码应用1 使用场景2 注意事项扩展1 clone方式的备忘录2 多状态的备忘录模式3 多备份的备忘录4 封装得更好一点备忘录模式在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样以后就可将该对象恢复到原先保存的状态1. UML类图2. 定义 通俗地说,备忘...原创 2018-02-25 21:25:27 · 151 阅读 · 0 评论 -
策略模式
策略模式定义一组算法,将每个算法都封装起来,并且使他们之间可以互换1. UML类图2. 定义 主要采用的是面向对象的继承和多态机制Context封装角色:也叫作上下文角色,起承上启下封装的作用,屏蔽高层模块对策略、算法的直接访问,封装可能存在的变化Strategy抽象策略角色:策略、算法家族的抽象,通常为接口,定义每个策略或算法必须具有的方法和属性,Alg...原创 2018-02-25 21:26:07 · 288 阅读 · 0 评论 -
访问者模式
访问者模式封装一些作用于某种数据结构中的各元素的操作,它可以在不改变数据结构的前提下定义作用于这些元素的新的操作1. UML类图2. 定义Visitor抽象访问者:抽象类或者接口,声明访问者可以访问哪些元素,具体到程序中就是visit方法的参数定义哪些对象是可以被访问的ConcreteVisitor具体访问者:它影响访问者访问到一个类后该怎么敢, 要做什么事情El...原创 2018-02-25 21:26:47 · 107 阅读 · 0 评论 -
观察者模式
观察者模式UML类图定义通用代码应用1 优点2 缺点3 使用场景观察者模式定义对象间一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并被自动更新1. UML类图2. 定义Subject被观察者:定义被观察者必须实现的职责,它必须能够动态的增加、取消观察者。他一般是抽象类或者是实现类,仅仅完成作为被...原创 2018-02-25 21:27:23 · 98 阅读 · 0 评论 -
解释器模式
解释器模式给定一门语言,定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中的句子1. UML类图2. 定义AbstractExpression抽象解释器:具体的解释任务由各个实现类完成,具体的解释器分别由TerminalExpression和NonTerminalExpression完成TerminalExpression终结符表达式:实现与文...原创 2018-02-25 21:27:54 · 105 阅读 · 0 评论 -
命令模式
命令模式UML类图相关定义通用源码应用1 优点2 缺点3 扩展命令模式将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能1. UML类图2. 相关定义Receive接受者角色:干活的角色,命令传递导这里被执行Command命令角色:需要执行的所有命令都在这里...原创 2018-02-25 21:28:30 · 139 阅读 · 0 评论 -
模板方法模式
模板方法模式UML类图特征通用代码应用1 优点2 缺点3 使用场景模板方法模式定义了一个操作中的算法的框架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可以重定义该算法的某些特定步骤1. UML类图2. 特征如上类图,AbstractClass叫做抽象模板,它的方法分为两类:基本方法:基本方法也叫基本操作,是...原创 2018-02-25 21:29:09 · 116 阅读 · 0 评论 -
责任链模式
责任链模式UML图相关定义通用代码应用1 优点2 缺点3 注意事项责任链模式使多个对象都有机会处理请求,从而避免了请求的发送者和接受者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有对象处理它位置1. UML图2. 相关定义抽象的处理者: 定义请求的处理方法handleMessage,唯一对外开放方法定义...原创 2018-02-25 21:29:42 · 119 阅读 · 0 评论 -
中介者模式
中介者模式UML类图定义通用源码应用1 优点2 缺点3 使用场景中介者模式用一个中介对象封装一系列的对象交互,中介者使各对象不需要显示地相互作用,从而使其耦合松散,而且可以独立地改变他们之间的交互1. UML类图2. 定义Mediator抽象中介者角色:抽象中介者角色定义同意的接口,用于各同时角色之间的通信ConcreteMe...原创 2018-02-25 21:30:31 · 133 阅读 · 0 评论 -
原型模式
原型模式通用源码应用1 优点2 使用场景原型模式的注意事项原型模式用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象1. 通用源码//原型模式通用源码public class PrototypeClass implements Cloneable{ //覆写父类Object方法 @Override pub...原创 2018-02-25 19:59:34 · 296 阅读 · 0 评论 -
建造者模式
建造者模式UML类图定义通用代码应用1 优点2 使用场景3 注意事项建造者模式将一个复杂对象的构建与他的表示分离,使得同样的构建过程可以创建不同的表示1. UML类图2. 定义在建造者模式中,有如下4个角色Product产品类:通常是实现了模板方法模式,也就是有模板方法和基本方法Builder抽象建造者:规范产品的组建,一...原创 2018-02-25 19:59:00 · 96 阅读 · 0 评论 -
门面模式
门面模式1. UML类图2. 定义3. 通用代码4. 应用4.1 优点4.2 缺点4.3 使用场景5. 注意事项5.1一个子系统可以有多个门面5.2 门面不参与子系统内的业务逻辑门面模式要求一个子系统的外部与其内部的通信必须通过一个统一的对象进行。门面模式提供一个高层次的接口,使得子系统更易用使用1. UML类图 类图虽然简单,...原创 2018-02-27 10:52:27 · 372 阅读 · 0 评论 -
桥梁模式
桥梁模式1. UML类图2. 定义3. 通用源码4. 应用4.1 优点4.2 使用场景桥梁模式将抽象和实现解耦,使得两者可以独立地变化1. UML类图2. 定义Abstraction抽象化角色:它的主要职责是定义出该角色的行为,同时保存一个对实现化角色的引用,该角色一般是抽象类Implementor实现化角色:它是接口或者抽象类...原创 2018-02-27 10:53:21 · 129 阅读 · 0 评论 -
适配器模式
适配器模式1. UML类图1.1 类适配器1.2 对象适配器2. 定义3. 通用代码4. 应用4.1 优点4.2 使用场景4.3 注意事项适配器模式将一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作1. UML类图1.1 类适配器1.2 对象适配器2...原创 2018-02-27 10:53:54 · 114 阅读 · 0 评论 -
享元模式
享元模式使用共享对象可有效地支持大量的细粒度对象1. UML类图2. 定义Flyweight抽象享元角色:简单地说就是一个产品的抽象类,同时定义出对象的外部状态和内部状态的接口或实现ConcreteFlyweight具体享元角色:具体的一个产品类,实现抽象角色定义的业务。该角色中需要注意的是内部状态处理应该与环境无关,不应该出现一个操作改变了内部状态,同时修改了外部...原创 2018-02-27 10:54:31 · 161 阅读 · 0 评论 -
装饰模式
装饰模式1. UML类图2. 定义3. 通用源码4. 应用4.1 优点4.2 缺点4.3 使用场景装饰模式动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式相比生成子类更为灵活1. UML类图2. 定义Component抽象构件:是一个接口或者是抽象类,最核心的对象,最原始的对象ConcreteComponent具体...原创 2018-02-27 10:55:11 · 143 阅读 · 0 评论 -
组合模式
组合模式1. UML类图2. 定义3. 通用代码4. 应用4.1 优点4.2 缺点4.3 使用场景5. 透明的组合模式5.1 UML类图5.2 透明模式和安全模式5.3 透明模式demo5.4 优点组合模式将对象组合成树形结构以表示“部分-整体”的层次结构,使得用户对单个对象和组合对象的使用具有一致性1. UML类图2....原创 2018-02-27 10:55:51 · 163 阅读 · 0 评论 -
抽象工厂模式
抽象工厂模式UML类图代码实现具体分析优缺点和使用场景1 优点2 缺点3 使用场景抽象工厂模式 为创建一组相关或相互依赖的对象提供一个接口,而且无须制定他们的具体类1. UML类图2. 代码实现//抽象产品类public abstract class AbstractProductA{ //每个产品共有的方...原创 2018-02-25 19:55:37 · 128 阅读 · 0 评论 -
工厂方法模式
工厂方法模式UML类图通用代码工厂方法模式的应用优点使用场景简单工厂模式多个工厂模式替代单例模式延迟初始化工厂方法模式 定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法使一个类的实例化延迟到其子类1. UML类图2. 通用代码//抽象产品类public abstract class Product{...原创 2018-02-25 19:57:37 · 164 阅读 · 0 评论 -
单例模式
单例模式 确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例单例模式饿汉式懒汉式线程不安全懒汉式线程安全双重检验锁双重检验锁volatile静态内部类枚举 Enum优缺点和使用场景1. 饿汉式public class Singleton{ //类加载时就初始化 private static final Sin...原创 2018-02-25 19:58:15 · 133 阅读 · 0 评论 -
状态模式
状态模式当一个对象内在状态改变时允许其改变行为,这个对象看起来像改变了其类1. UML类图2. 定义State抽象状态角色:接口或者是实现类,负责对象状态定义,并且封装环境角色以实现状态切换ConcreteState具体状态角色:每一个具体状态必须完成两个职责:本状态的行为管理以及趋向状态处理,通俗地说,就是本状态下要做的事情,以及本状态如何过渡到其他状态Cont...原创 2018-02-25 21:31:05 · 115 阅读 · 0 评论