装饰者模式
Decorator模式(别名Wrapper):动态将职责附加到对象上,若要扩展功能,装饰者提供了比继承更具弹性的代替方案。
意图:
动态地给一个对象添加一些额外的职责。就增加功能来说,Decorator模式相比生成子类更为灵活。
设计原则:
1. 多用组合,少用继承。
利用继承设计子类的行为,是在编译时静态决定的,而且所有的子类都会继承到相同的行为。然而,如果能够利用组合的做法扩展对象的行为,就可以在运行时动态地进行扩展。
2. 类应设计的对扩展开放,对修改关闭。
上代码实例
public interface Order {
public void print();
}
public class SalesOrder implements Order {
public void print() {
}
}
public class OrderDecorator implements Order {
protected Order order;
public OrderDecorator(Order order) {
this.order = order;
}
public void print() {
System.out.println("Order");
}
}
public class HeaderDecorator extends OrderDecorator {
public HeaderDecorator(Order order) {
super(order);
}
public void print() {
printHeader();
super.order.print();
}
public void printHeader() {
System.out.println("Header");
}
}
public class FooterDecorator extends OrderDecorator {
public FooterDecorator(Order order) {
super(order);
}
public void print() {
super.order.print();
printFooter();
}
public void printFooter() {
System.out.println("Footer");
}
}
public class Client {
public static void main(String[] args) {
Order order = new SalesOrder(); //本来是个销售订单
order = new OrderDecorator(order); //我们销售订单装饰一下,就可以打印比如发票订单详细
order = new FooterDecorator(order); //再装饰一下,就可以打印发票尾部
order = new HeaderDecorator(order); //再装饰一下,可以打印发票头部
order.print(); //就一个打印就可以打印所有内容了,神奇吧 哈哈
}
}
打印结果
Header
Order
Footer
其实Java中的流操作就是使用的装饰模式
- 大小: 40.5 KB
- 大小: 47.8 KB
分享到:
相关推荐
C#设计模式之Decorator 装饰模式,pdf+视频教学,实例演示,易学易用~~
奇幻RPG(物品锻造 与 Decorator模式)本文中,我们通过一个常见的给武器(对象)添加宝石(额外的状态和行为)的例子,讨论了Decorator设计模式的实现过程。
设计模式C++学习之装饰模式(Decorator)
动态地给一个对象添加一些额外的职责。就扩展功能而言,它比生成子类方式更为灵活。
Head First 设计模式 (三) 装饰者模式(decorator pattern) C++实现 VS2012 下通过
博文链接:https://your.iteye.com/blog/133420
第12章 真人不露相:装饰模式 (Decorator) 第13章 游刃有余:桥模式 (Bridge) 第14章 如法炮制:组合模式 (Composite) 第15章 源源不断:享元模式 (Flyweight) 第16章 按部就班:模板方法模式 (TemplateMethod) 第17...
在这里与各位分享本人从网络上下载的C#面向对象设计模式纵横谈系列视频,共有25节,除了第一节需要各位贡献一点资源分以作为对本人上传资源的回馈,后面的其他资源均不需要... 这是第10节:结构型模式Decorator装饰模式
设计模式 - 装饰模式(C++实例) 若有问题,请指出。
设计模式 t07Decorator
C#面向对象设计模式 Decorator 装饰模式 视频讲座下载
学习java 装饰模式(decorator)非常好的例子
C#面向对象设计模式纵横谈(10):Decorator 装饰模式(结构型模式) (Level 300)
C#面向对象设计模式纵横谈(10):Decorator 装饰模式(结构型模式)
java Decorator设计模式应用,可以简单了解它,初学者入。
设计模式之Decorator(油漆工) 设计模式之Bridge 设计模式之Flyweight(享元) 行为模式: 设计模式之Template 设计模式之Memento(备忘机制) 设计模式之Observer 设计模式之Chain of Responsibility(职责链) 设计模式之...
主要介绍了Java设计模式之装饰模式(Decorator模式)介绍,本文讲解了为什么使用Decorator、如何使用装饰模式、Jive中的Decorator实现等内容,需要的朋友可以参考下
NULL 博文链接:https://jacky-dai.iteye.com/blog/1132229
c++设计模式-结构型模式-装饰器模式;QT工程;c++简单源码; 装饰器(Decorator)模式的定义:指在不改变现有对象结构的情况下,动态地给该对象增加一些职责(即增加其额外功能)的模式,它属于对象结构型模式。