1.装饰模式
动态地给对象添加一些额外的职责。就功能来说装饰模式相比生成子类更为灵活。
动态地扩展一个对象的功能,而不需要改变原始类代码的一种成熟模式。
在装饰模式中,“具体组件”类和“具体装饰”类是该模式中的最重要的两个角色。
2装饰模式-结构
装饰模式的结构中包括四种角色:
- 抽象组件(Component)
- 具体组件(ConcreteComponent)
- 装饰(Decorator)
- 具体装饰(ConcreteDecotator)
装饰模式的核心就是在于装饰的构造方法关联了抽象组件的引用,而具体组件和具体装饰都是属于抽象组件的子类,所以在构造具体装饰的时候,可以把不同的具体装饰作为引用来构造自己,即实现责任的扩充。
3装饰模式-场景描述
麻雀可以在飞100米的基础上连续飞50米
4装饰模式-场景分析
- 抽象组件
鸟 Bird - 具体组件
麻雀 Sparrow - 装饰
装饰 Decorator - 具体装饰
具体装饰 SparrowDecorator
5装饰模式-代码实现
package patterns.decorator; /** * 抽象组件 * @author Administrator * */ public abstract class Bird { public abstract double fly(); } package patterns.decorator; /** * 具体组件 * @author Administrator * */ public class Sparrow extends Bird { @Override public double fly() { return 100; } } package patterns.decorator; /** * 装饰角色 * @author Administrator * */ public abstract class Decorator extends Bird { public Bird bird; public Decorator(Bird bird) { this.bird = bird; } } package patterns.decorator; /** * 具体装饰角色 * @author Administrator * */ public class SparrowDecorator extends Decorator { public double DISTANCE = 50; public SparrowDecorator(Bird bird) { super(bird); } @Override public double fly() { return bird.fly()+DISTANCE; } } package patterns.decorator; public class Client { public static void main(String[] args) { Bird bird = new Sparrow(); System.out.println(bird.fly()); Decorator decorator = new SparrowDecorator(bird); System.out.println(decorator.fly()); Decorator decorator2 = new SparrowDecorator(decorator); System.out.println(decorator2.fly()); } }
相关推荐
└── 设计模式 ├── 01_第1章_统一建模语言基础知识.ppt ├── 第10章_适配器模式.ppt ├── 第11章_桥接模式.ppt ├── 第12章_组合模式.ppt ├── 第13章_装饰模式.ppt ...├── 第8章_原型模式.ppt
《PHP设计模式介绍》第八章 迭代器模式 《PHP设计模式介绍》第九章 观测模式 《PHP设计模式介绍》第十章 规范模式 《PHP设计模式介绍》第十一章 章代理模式 《PHP设计模式介绍》第十二章 装饰器模式 《PHP设计...
第8章 简单工厂模式 第9章 工厂方法模式 第10章 抽象工厂模式 第11章 单件模式 第12章 生成器模式 第13章 原型模式 第三部分 结构型模式 第14章 适配器模式 第15章 桥接模式 第16章 组合模式 第17章 装饰模式 第18章...
【第8章 装饰工程计价软件简介】 装饰工程计价软件是建筑工程领域中用于计算装饰工程成本的专业工具,它结合了计算机技术的优势,极大地提高了装饰工程造价的准确性和效率。本章主要介绍了装饰工程计价软件的基本...
8. **设计模式**:虽然设计模式不是Java语言特有的,但在第八章中可能会探讨一些常见的设计模式,如单例模式、工厂模式、观察者模式等,这些模式在实际开发中非常有用。 9. **JNI(Java Native Interface)**:Java...
第8章 生成器模式(Builder) 第9章 原型模式(Prototype) 第10章 中介者模式(Mediator) 第11章 代理模式(Proxy) 第12章 观察者模式(Observer) 第13章 命令模式(Command) 第14章 迭代器模式(Iterator) ...
第8章 工厂方法模式 8.1 女娲造人的故事 8.2 工厂方法模式的定义 8.3 工厂方法模式的应用 8.3.1 工厂方法模式的优点 8.3.2 工厂方法模式的使用场景 8.4 工厂方法模式的扩展 8.5 最佳实践 第9章 抽象工厂模式 9.1 ...
第8章 生成器模式(Builder) 第9章 原型模式(Prototype) 第10章 中介者模式(Mediator) 第11章 代理模式(Proxy) 第12章 观察者模式(Observer) 第13章 命令模式(Command) 第14章 迭代器模式(Iterator) ...
第8章 单例(singleton)模式 67 第9章 观察者(observer)模式 72 第10章 调停者(mediator)模式 85 第11章 代理(proxy)模式 97 第12章 职责链(chain of responsibility)模式 115 第13章 享元(flyweight)模式 122 第14章...
第8章 原型模式(Prototype) 8.1 模式解说 8.2 结构和用法 8.2.1 模式结构 8.2.2 代码模板 8.3 范例与实践 8.3.1 Delphi对象的克隆 8.3.2 用原型模式克隆字体 8.3.3 Delphi对象流化与原型模式 8.3.4 范例...
第8章 原型模式(Prototype) 8.1 模式解说 8.2 结构和用法 8.2.1 模式结构 8.2.2 代码模板 8.3 范例与实践 8.3.1 Delphi对象的克隆 8.3.2 用原型模式克隆字体 8.3.3 Delphi对象流化与原型模式 ...
第8章 生成器模式(Builder) 第9章 原型模式(Prototype) 第10章 中介者模式(Mediator) 第11章 代理模式(Proxy) 第12章 观察者模式(Observer) 第13章 命令模式(Command) 第14章 迭代器模式(Iterator) ...
第8章 生成器模式(Builder) 第9章 原型模式(Prototype) 第10章 中介者模式(Mediator) 第11章 代理模式(Proxy) 第12章 观察者模式(Observer) 第13章 命令模式(Command) 第14章 迭代器模式(Iterator) ...
第8章 生成器模式(Builder) 第9章 原型模式(Prototype) 第10章 中介者模式(Mediator) 第11章 代理模式(Proxy) 第12章 观察者模式(Observer) 第13章 命令模式(Command) 第14章 迭代器模式(Iterator) ...
在"设计模式1~8章"中,我们能够深入学习到23种经典的面向对象设计模式,这些模式有助于提高代码的可重用性、可维护性和可扩展性。以下是对这8章内容的详细概述: 第01章通常会介绍设计模式的基本概念,包括什么是...
第8章 生成器模式(Builder) 第9章 原型模式(Prototype) 第10章 中介者模式(Mediator) 第11章 代理模式(Proxy) 第12章 观察者模式(Observer) 第13章 命令模式(Command) 第14章 迭代器模式...
第8章 生成器模式(Builder) 第9章 原型模式(Prototype) 第10章 中介者模式(Mediator) 第11章 代理模式(Proxy) 第12章 观察者模式(Observer) 第13章 命令模式(Command) 第14章 迭代器模式...
第8章 生成器模式(Builder) 第9章 原型模式(Prototype) 第10章 中介者模式(Mediator) 第11章 代理模式(Proxy) 第12章 观察者模式(Observer) 第13章 命令模式(Command) 第14章 迭代器模式...
第8章 生成器模式(Builder) 第9章 原型模式(Prototype) 第10章 中介者模式(Mediator) 第11章 代理模式(Proxy) 第12章 观察者模式(Observer) 第13章 命令模式(Command) 第14章 迭代器模式...
第8章 装饰器设计模式 第4部分 行为型设计模式 第9章 模板方法模式 第10章 状态设计模式 第5部分 MySQL和PHP设计模式 第11章 通用类负责连接,代理模式保证安全 第12章 策略设计模式的灵活性 第13章 职责链...