装饰模式

个人博客

http://www.milovetingting.cn

装饰模式

模式介绍

装饰模式也称为包装模式,结构型设计模式之一,其使用一种对客户端透明的方式来动态地扩展对象的功能,同时它也是继承关系的一种替代方案之一。

模式定义

动态地给一个对象添加一些额外的职责。就增加功能来说,装饰模式生成子类更为灵活。

使用场景

需要透明且动态地扩展类的功能时。

简单使用

定义Component

public abstract class Component {

	public abstract void operate();

}

定义具体的Component

public class ConcreteComponent extends Component {

	@Override
	public void operate() {
		System.out.println("ConcreteComponent operate");
	}

}

定义Decorator

public abstract class Decorator extends Component {

	private Component component;

	public Decorator(Component component) {
		super();
		this.component = component;
	}

	@Override
	public void operate() {
		component.operate();
	}

}

定义具体的Decorator

public class ConcreteDecorator extends Decorator {

	public ConcreteDecorator(Component component) {
		super(component);
	}

	@Override
	public void operate() {
		operateA();
		super.operate();
		operateB();
	}

	public void operateA() {
		System.out.println("operateA");
	}

	public void operateB() {
		System.out.println("operateB");
	}

}

调用

public class Main {

	public static void main(String[] args) {
		Component component = new ConcreteComponent();
		Decorator decorator = new ConcreteDecorator(component);
		decorator.operate();
	}

}

输出结果

operateA
ConcreteComponent operate
operateB
原文地址:https://www.cnblogs.com/milovetingting/p/12329519.html