随笔分类 - DesignPattern
DesignPattern
摘要:行为型模型 空对象模式 空对象模式 在空对象模式(Null Object Pattern)中,一个空对象取代 NULL 对象实例的检查。Null 对象不是检查空值,而是反应一个不做任何动作的关系。这样的 Null 对象也可以在数据不可用的时候提供默认的行为。 在空对象模式中,我们创建一个指定各种要执
阅读全文
摘要:行为型模型 迭代器模式 GOOD:提供一种方法顺序访问一个聚敛对象的各个元素,而又不暴露该对象的内部表示。 为遍历不同的聚集结构提供如开始,下一个,是否结束,当前一项等统一接口。 Iterator(迭代器接口): 该接口必须定义实现迭代功能的最小定义方法集 比如提供hasNext()和next()方
阅读全文
摘要:行为型模型 状态模式 Context:用户对象 拥有一个State类型的成员,以标识对象的当前状态; State:接口或基类 封装与Context的特定状态相关的行为; ConcreteState:接口实现类或子类 实现了一个与Context某个状态相关的行为。 适用于: 对象的行为,依赖于它所处的
阅读全文
摘要:行为型模型 访问者模式 抽象访问者(Visitor)角色: 声明了一个或者多个访问操作,形成所有的具体元素角色必须实现的接口。 具体访问者(ConcreteVisitor)角色: 实现抽象访问者角色所声明的接口,也就是抽象访问者所声明的各个访问操作。 抽象节点(Element)角色: 声明一个接受操
阅读全文
摘要:行为型模型 备忘录模式 应用场景 如果一个对象需要保存状态并可通过undo或rollback等操作恢复到以前的状态时,可以使用Memento模式。 1)一个类需要保存它的对象的状态(相当于Originator角色) 2)设计一个类,该类只是用来保存上述对象的状态(相当于Memento角色) 3)需要
阅读全文
摘要:行为型模型 观察者模式 Subject(被观察者) 被观察的对象。当需要被观察的状态发生变化时,需要通知队列中所有观察者对象。Subject需要维持(添加,删除,通知)一个观察者对象的队列列表。 ConcreteSubject 被观察者的具体实现。包含一些基本的属性状态及其他操作。 Observer
阅读全文
摘要:行为型模型 中介者模式 Mediator抽象中介者 中介者类的抽象父类。 concreteMediator 具体的中介者类。 Colleague 关联类的抽象父类。 concreteColleague 具体的关联类。 适用于: 用一个中介对象,封装一些列对象(同事)的交换,中介者是各个对象不需要显示
阅读全文
摘要:行为型模型 策略模式 Strategy: 策略(算法)抽象。 ConcreteStrategy 各种策略(算法)的具体实现。 Context 策略的外部封装类,或者说策略的容器类。根据不同策略执行不同的行为。策略由外部环境决定。 好处: //算法的实现 和 客户端的使用 解耦合 //使得算法变化,不
阅读全文
摘要:行为型模型 责任链模式 Handler 处理类的抽象父类。 concreteHandler 具体的处理类。 责任链优缺点 优点: 1。责任的分担。每个类只需要处理自己该处理的工作(不该处理的传递给下一个对象完成),明确各类的责任范围,符合类的最小封装原则。 2。可以根据需要自由组合工作流程。如工作流
阅读全文
摘要:行为型模型 命令模式 Command Command命令的抽象类。 ConcreteCommand Command的具体实现类。 Receiver 需要被调用的目标对象。 Invorker 通过Invorker执行Command对象。 适用于: 是将一个请求封装为一个对象,从而使你可用不同的请求对客
阅读全文
摘要:行为型模型 模版模式 应用场景 Template Method模式一般应用在具有以下条件 的应用中: - 具有统一的操作步骤或操作过程 - 具有不同的操作细节 - 存在多个具有同样操作步骤的应用场景,但某些具体的操作细节却各不相同总结: 在抽象类中统一操作步骤,并规定好接口;让子类实现接口。这样可以
阅读全文
摘要:结构型模式 过滤器模式 过滤器模式 过滤器模式(Filter Pattern)或标准模式(Criteria Pattern)是一种设计模式,这种模式允许开发人员使用不同的标准来过滤一组对象,通过逻辑运算以解耦的方式把它们连接起来。这种类型的设计模式属于结构型模式,它结合多个标准来获得单一标准。 实现
阅读全文
摘要:结构型模式 享元模式 抽象享元角色: 所有具体享元类的父类,规定一些需要实现的公共接口。 具体享元角色: 抽象享元角色的具体实现类,并实现了抽象享元角色规定的方法。享元工厂角色: 负责创建和管理享元角色。 使用场景: 是以共享的方式,高效的支持大量的细粒度的对象。
阅读全文
摘要:结构型模式 外观模式 Facade 为调用方定义简单的调用接口。 Clients 调用者。通过Facade接口调用提供某功能的内部类群。 Packages 功能提供者。指提供功能的类群(模块或子系统) 适用于: 为子系统中统一一套接口,让子系统更加容易使用。
阅读全文
摘要:结构型模式 桥接模式 Client Bridge模式的使用者 Abstraction 抽象类接口(接口或抽象类)维护对行为实现(Implementor)的引用 Refined Abstraction Abstraction子类 Implementor 行为实现类接口 (Abstraction接口定义
阅读全文
摘要:结构型模式 组合模式 Component (树形结构的节点抽象) - 为所有的对象定义统一的接口(公共属性,行为等的定义) - 提供管理子节点对象的接口方法 - [可选]提供管理父节点对象的接口方法 Leaf (树形结构的叶节点) Component的实现子类 Composite(树形结构的枝节点)
阅读全文
摘要:结构型模式 适配器模式 适用于: 是将一个类的接口转换成客户希望的另外一个接口。使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
阅读全文
摘要:结构型模式 装饰模式 适用于: 装饰者模式(Decorator Pattern)动态的给一个对象添加一些额外的职责。就增加功能来说,此模式比生成子类更为灵活。
阅读全文
摘要:结构型模式 代理模式 subject(抽象主题角色): 真实主题与代理主题的共同接口。 RealSubject(真实主题角色): 定义了代理角色所代表的真实对象。 Proxy(代理主题角色): 含有对真实主题角色的引用,代理角色通常在将客户端调用传递给真是主题对象之前或者之后执行某些操作,而不是单纯
阅读全文