<<设计模式之禅(第二版)>>——第十七
作者:
leiiiooo | 来源:发表于
2016-10-18 09:45 被阅读15次定义:
- 动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式相比生成子类更为灵活。
![](https://img.haomeiwen.com/i1638747/ca5f32540a09f272.png)
装饰模式通用类图
/*
* 定义抽象的构件
* */
public abstract class Component {
public abstract void operate();
}
public class ConcreteCompnent extends Component {
@Override
public void operate() {
// TODO Auto-generated method stub
}
}
/*
* 定义抽象的修饰类,通过构造参数传入具体的组件
* */
public abstract class Decorator extends Component {
private Component component;
public Decorator(Component component) {
// TODO Auto-generated constructor stub
this.component = component;
}
@Override
public void operate() {
// TODO Auto-generated method stub
this.component.operate();
}
}
public class ConcreteDecorator extends Decorator {
public ConcreteDecorator(Component component) {
super(component);
// TODO Auto-generated constructor stub
}
// 定义自己的私有修饰方法
private void privateMethod() {
}
@Override
public void operate() {
// TODO Auto-generated method stub
this.privateMethod();
super.operate();
}
}
public class Client {
public static void main(String[] args) {
Component component = new ConcreteCompnent();
Decorator decorator = new ConcreteDecorator(component);
decorator.operate();
}
}
优点:
- 装饰类和被装饰类可以独立发展,而不会耦合,换句话说,Component无须知道Decorator类,Decorator是从外部拓展Component类的功能,Decorator也不用知道具体的组件
- 可以作为继承关系的一种替代方案
- 可以动态的拓展实现类的功能
缺点:
本文标题:<<设计模式之禅(第二版)>>——第十七
本文链接:https://www.haomeiwen.com/subject/nggzyttx.html
网友评论