设计模式-装饰模式
装饰模式
动态的给一个对象添加一些额外的职责,就增加功能来说,装饰模式相比生成子类更为灵活。
- 通常是继承关系的替代方案。
- 常用于动态的增加对象的功能。
通用类图
组件含义
Component: 抽象的,需要被修饰的核心类。
ConcreteComponent: 被修饰的类的具体实现。
Decorator: 抽象的,包含指向Component构件的私有变量。
ConcreteComponent: 装饰类的具体实现。
demo
abstract class Component {
public abstract void operate();
}
class ConcreateComponent extends Component {
@Override
public void operate() {
System.out.println("do something");
}
}
abstract class Decorator extends Component {
private Component component = null;
public Decorator(Component component) {
this.component = component;
}
@Override
public void operate() {
this.component.operate();
}
}
class ConcreteDecorator1 extends Decorator {
public ConcreteDecorator1(Component component) {
super(component);
}
private void method1() {
System.out.println("method 1 decorate");
}
public void operate() {
this.method1();
super.operate();
}
}
class ConcreteDecorator2 extends Decorator {
public ConcreteDecorator2(Component component) {
super(component);
}
private void method2() {
System.out.println("method 2 decorate");
}
public void operate() {
this.method2();
super.operate();
}
}
public class Client {
public static void main(String[] args) {
Component component = new ConcreateComponent();
component = new ConcreteDecorator1(component);
component = new ConcreteDecorator2(component);
component.operate();
}
}
结果
版权声明:本文为dwtw原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。