随笔分类 - 设计模式
Gof 设计模式
摘要:意图:将一个请求封装为一个对象,从而可用不同的请求对客户进行参数化;对请求排队或记录日志,以及支持可撤销的操作动机:将”发出请求的对象”和”接收与执行这些请求的对象”分隔开来。效果:1)、command模式将调用操作的对象和实现该操作的对象解耦2)、可以将多个命令装配成一个复合命令,复合命令是Composite模式的一个实例3)、增加新的command很容易,无需改变已有的类适用性:1)、抽象出待执行的动作以参数化某对象2)、在不同的时刻指定、排列和执行请求。如请求队列3)、支持取消操作4)、支持修改日志5)、用构建在原语操作上的高层操作构造一个系统。支持事物参与者:1)、Command 声.
阅读全文
摘要:意图:确保一个类只有一个实例,并提供一个全局访问点适用性:1、当类只能有一个实例而且客户可以从一个众所周知的访问点访问它时2、当这个唯一实例应该是通过子类化可扩展的,并且客户应该无需更改代码就能使用一个扩展的实例时结构图:实例: 1 package com.test.patten.singleton; 2 3 public class Singleton { 4 private static Singleton instance; 5 private String message; 6 7 private Singleton(){ 8 message...
阅读全文
摘要:意图:抽象工厂模式提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类适用性:1、一个系统要独立于它的产品的创建、组合和表示时。2、一个系统要由多个产品系列中的一个来配置时。3、当你要强调一系列相关的产品对象的设计以便进行联合使用时。4、当你提供一个产品类库,而只想显示它们的接口而不是实现时。结构图:实例:1 package com.test.patten.adstractfactory;2 3 public interface AbstractFactory {4 AbstractProductA createProductA();5 AbstractProdu...
阅读全文
摘要:意图:定义一个用于创建对象的接口,让子类决定创建那个类。Factory Method使一个类的实例化延迟到其子类中动机:框架使用抽象类定义和维护对象之间的关系。这些对象的创建通常也由框架负责适用性:1.当一个类不知道它所必须创建的对象的类的时候2.当一个类希望由它的子类来指定它所创建的对象的时候3.当类将创建对象的职责委托给多个帮助子类中的某一个,并且你希望将那一个帮助子类是代理者这一信息局部化的时候结构:工厂方法的实现主要有两种情况:1.Creator类是一个抽象类并且不提供它所声明的工厂方法的实现2.Creator是一个具体的类而且为工厂方法提供一个缺省的实现实例: 1 package c
阅读全文
摘要:意图:动态的将责任附加到对象上什么时候使用:1.在不影响其他对象的情况下,以动态、透明的方式给单个对象添加职责2.处理那些可以撤销的职责3.当不能采用生成子类的方式进行扩充时结构图:示例代码:1 package com.test.patten.decorator;2 3 public interface Person {4 void doCoding();5 } 1 package com.test.patten.decorator; 2 3 public class Employee implements Person { 4 5 @Override 6 publ...
阅读全文
摘要:定义:属于结构型模式,其主要作用是将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。比如你手机只有2.5mm接口(貌似就Nokia干的出来),但你只能买到3.5mm的,这时就需要买个适配器了(─.─|||意图宗旨:保留现有类所提供的服务,向客户提供接口,以满足客户的期望什么时候可以使用它:1你想使用一个已经存在的类,而它的接口不符合你的需求。没有2.5mm2你想创建一个可以复用的类,该类可以与其他不相关的类或不可预见的类(即那些接口可能不一定兼容的类)协同工作。3你想使用一些已经存在的子类,但是不可能对每一个都进行子类化以匹配它们的
阅读全文

浙公网安备 33010602011771号