标签:
定义:动态地给一个对象添加一些额外的职责
类图:
代码:
public abstract class Component { public abstract void doSomething(); }
public class ConcreteComponent extends Component{ @Override public void doSomething() { // TODO Auto-generated method stub } }
public abstract class Decorator extends Component{ private Component component = null; public Decorator(Component component){ this.component = component; } @Override public void doSomething(){ component.doSomething(); } }
public class ConcreteDecorator extends Decorator{ public ConcreteDecorator(Component component) { super(component); // TODO Auto-generated constructor stub } private void methods1(){ } public void doSomething(){ methods1(); super.doSomething(); } }
装饰类和被装饰类可以独立发展
装饰模式是继承关系的一个替代方案
装饰模式可以动态的扩展一个实现类的功能
缺点:
多层的装饰比较复杂
使用场景
需要扩展一个类的功能
需要动态地给一个对象增加功能
标签:
原文地址:http://blog.csdn.net/renpengddxx/article/details/52116020