预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共34页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

常用设计模式 设计模式的分类: 设计模式可以分为三大类,分别是创建型设计模式、行为型设计模式以及结构型设计模式。 创建型的设计模式: 单例模式(Singleton) 构建模式(Builder) 原型模式(Prototype) 抽象工厂模式(AbstractFactory) 工厂方法模式(FactoryMethod) 行为设计模式: 策略模式(Strategy) 状态模式(State) 责任链模式(ChainofResponsibility) 解释器模式(Interpreter) 命令模式(Command) 观察者模式(Observer) 备忘录模式(Memento) 迭代器模式(Iterator) 模板方法模式(TemplateMethod) 访问者模式(Visitor) 中介者模式(Mediator) 结构型设计模式: 装饰者模式(Decorator) 代理模式(Proxy) 组合模式(Composite) 桥连接模式(Bridge) 适配器模式(Adapter) 蝇量模式(Flyweight) 外观模式(Facade) 各种模式的表述: 单例模式(Singleton):确保有且只有一个对象被创建。 抽象工厂模式(AbstractFactory):允许客户创建对象的家族,而无需指定他们的具体类。 工厂方法模式(FactoryMethod):由子类决定要创建的具体类是哪一个。 装饰者模式(Decorator):包装一个对象,以提供新的行为。 状态模式(State):封装了基于状态的行为,并使用委托在行为之间切换。 迭代器模式(Iterator):在对象的集合之中游走,而不暴露集合的实现。 外观模式(Facade):简化一群类的接口。 策略模式(Strategy):封装可以互换的行为,并使用委托来决定要使用哪一个。 代理模式(Proxy):包装对象,以控制对此对象的访问。 适配器模式(Adapter):封装对象,并提供不同的接口。 观察者模式(Observer):让对象能够在状态改变时被通知。 模板方法模式(TemplateMethod):有子类决定如何实现一个算法中的步骤。 组合模式(Composite):客户用一致的方法处理对象集合和单个对象。 命令模式(Command):封装请求成为对象。 1、装饰模式 装饰模式是对对象功能增强时,平时使用继承的一种替代方案 二.组成部分: 1.抽象构件:原始的功能接口 2.具体构件:具体的原始功能类 3.装饰角色:持有具体构件类的对象,以便执行原有功能 4.具体装饰:具体扩展的功能在这里 三.例子代码:使用装饰模式来演示一个对”行走”功能扩展的例子(听音乐+行走和唱歌+行 走) 1.抽象构件 [java]viewplaincopyprint? 1.packagecom.eekq.decorator; 2. 3.publicinterfaceComponent{ 4./**原始接口*/ 5.publicvoidgo(); 6.} packagecom.eekq.decorator; publicinterfaceComponent{ /**原始接口*/ publicvoidgo(); } 2.具体构件 [java]viewplaincopyprint? 1.packagecom.eekq.decorator; 2. 3.publicclassConcreteComponentimplementsComponent{ 4. 5.publicvoidgo(){ 6.System.out.println("行走"); 7.} 8. 9.} packagecom.eekq.decorator; publicclassConcreteComponentimplementsComponent publicvoidgo(){ System.out.println("行走"); } } 3.装饰角色来了 [java]viewplaincopyprint? 1.packagecom.eekq.decorator; 2. 3.publicclassDecoratorimplementsComponent{ 4./**持有私有的原始构件*/ 5.privateComponentcomponent; 6. 7./**构造子,委派给原始构件*/ 8.protectedDecorator(Componentcomponent){ 9.this.component=component; 10.} 11. 12./**调用原始构件功能,通常就可直接把扩展功能加在此方法中*/ 13.pu