`

装饰模式Decorator动态组合

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

所谓透明地给一个对象增加功能,就是要给一个对象增加功能,但是不能让这个对象知道,也就是不能去改动这个对象。

public abstract class Component {
  public abstract void operation();
}

public class ConcreteComponent extends Component {
  public void operation() {

  }
}

public abstract class Decorator extends Component {
  protected Component component;
  public Decorator(Component component) {
    this.component = component;
  }
  public void operation() {
    component.operation;
  }
}

public class ConcreteDecoratorA extends Decorator {
  private String addedState;

  public ConcreteDecoratorA(Component component) {
    super(component);
  }
 
  public String getAddedState() {
    return addedState;
  }

  public void setAddedState(String addedState) {
    this.addedState = addedState;
  }
 
  public void operation() {
    super.operation();
  }
}

public class ConcreteDecoratorB extends Decorator {

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

  private void addedBehavior() {

  } 

  public void operation() {
    super.operation();
    addedBehavior();
  }
}

在面向对象的设计中,有一条基本的规则就是“尽量使用对象组合,而不是对象继承”来扩展和复用功能。

装饰模式和AOP在思想上有共同之处。
分享到:
评论

相关推荐

    .NET设计模式(10):装饰模式(DecoratorPattern)

    在软件系统中,有时候我们会使用继承来扩展对象的功能,但是由于继承为类型引入的静态特质,使得这种扩展方式...[GOF《设计模式》]图1Decorator模式结构图装饰模式动态地给一个对象添加额外的职责。不论一幅画有没有画

    Java24种设计模式,Java24种设计模式,24种设计模式,学会了这24种设计模式,可以打遍天下无敌手,设计模式非常重要

    13、装饰模式DECORATOR PATTERN 14、迭代器模式ITERATOR PATTERN 15、组合模式COMPOSITE PATTERN 16、观察者模式OBSERVER PATTERN 17、责任链模式 18、访问者模式VISITOR PATTERN 19、状态模式 20、原型模式 21...

    jouryfirst#weekly-1#175.精读《设计模式 - Decorator 装饰器模式》1

    “就增加功能来说,Decorator 模式相比生成子类更为灵活” 这句话的含义是,组合比继承更灵活,当可拓展的功能很多时,继承方案会产生大量的子类,而组合可以提

    PHP设计模式之装饰器(装饰者)模式(Decorator)入门与应用详解

    装饰器模式就是基于对象组合的方式,可以很灵活的给对象添加所需要的功能,并且它的本质就是动态组合,一句话,动态是手段,组合才是目的。 也就是说,在这种模式下,我们可以对已有对象的部分内容或者功能进行调整...

    23种Python设计模式示例演示源码包.rar

    23种Python设计模式示例演示源码包,比如包括了工厂模式、Bridge桥接模式、Builder构建模式、Facade外观模式、Adapter适配器模式,Composite组合模式、Decorator装饰器模式,FactoryMethod工厂方法模式、Flyweight享...

    C#版 24种设计模式

    备忘录模式(Memento Pattern) 策略模式(Strategy Pattern) 抽象工厂模式(Abstract Factory Pattern) 代理模式(Proxy Pattern) ...装饰模式(Decorator Pattern) 状态模式(State Pattern) 组合模式(Composite Pattern)

    java设计模式教程+源代码

    Decorator ( 装饰模式 ) Facade ( 外观模式 ) Flyweight ( 享元模式 ) Proxy ( 代理模式 ) Chain of Responsibility ( 责任链模式 ) Command ( 命令模式 ) Interpreter ( 解释器模式 ) Iterator ( 迭代器模式...

    [设计模式]装饰、组合、职责链模式

    装饰模式:相当于是叠罗汉,将多个行为有序的串联起来,最终得到结果。(通过下一个行为装饰上一个行为) 组合模式:使得用户对单个对象和组合对象的使用具有一致性 责任链模式:使多个对象都有机会处理请求,从而...

    C#设计模式_设计模式_C#_

    装饰模式(Decorator Pattern) 9. 组合模式(Composite Pattern) 10. 外观模式(Facade Pattern) 11. 享元模式(Flyweight Pattern) 12. 代理模式(Proxy Pattern) 行为型: 13. 模板方法(Template Method) 14. 命令...

    C#设计模式(23种设计模式)

    装饰模式(Decorator Pattern) 9. 组合模式(Composite Pattern) 10. 外观模式(Facade Pattern) 11. 享元模式(Flyweight Pattern) 12. 代理模式(Proxy Pattern) 13. 模板方法(Template Method) 14. 命令...

    C++设计模式(Design Pattern)范例源代码

    装饰者模式(Decorator) 外观模式(Facade) 蝇量模式(Flyweight) 代理模式(Proxy) 行为型: 责任链模式(Chain of Responsibility) 命令模式(Command) 解释器模式(Interpreter) 迭代器模式(Iterator) 中介者模式...

    33种JAVA设计模式DEMO

    装饰器模式(Decorator Pattern) 外观模式(Facade Pattern) 享元模式(Flyweight Pattern) 代理模式(Proxy Pattern) 3 行为型模式 这些设计模式特别关注对象之间的通信。 责任链模式(Chain of ...

    用Java实现23种设计模式

    装饰器模式(Decorator Pattern) 外观模式(Facade Pattern) 享元模式(Flyweight Pattern) 代理模式(Proxy Pattern) 3. 行为型模式 责任链模式(Chain of Responsibility Pattern) 命令模式(Command ...

    23种java设计模式

    2、结构模式:Flyweight(共享模式)、Bridge(桥模式)、Decorator(装饰模式)、Composite(组合模式)、Adapter(适配器模式)、Proxy(代理模式)、Facade (外观模式)。3、行为模式:Iterator(迭代模式)、Template(模板...

    JAVA设计模式.rar

    策略模式【STRATEGY PATTERN】 代理模式【PROXY PATTERN】 单例模式【SINGLETON PATTERN】  ...装饰模式【DECORATOR PATTERN】 迭代器模式【ITERATOR PATTERN】  组合模式【COMPOSITE PATTERN】 ......

    设计模式PPT

     装饰者模式(Decorator Pattern)  外观模式(Facade Pattern)  享元模式(Flyweight Pattern)  代理模式(Proxy Pattern) 行为型模式用来对类或对象怎样交互和怎样分配职责进行描述,主要包含以下11种...

    JAVA设计模式-day2.pdf

    7、 装饰模式(Decorator); 8、 代理模式(Proxy) • 9、 外观模式(Facade); 10、 桥接模式(Bridge); 11、 组合模式(Composite))、关系模式(11种),挺不错的,或许对某些专业技术人事有帮组,推荐给...

    java版本二十三种设计模式.zip

    - 装饰器模式(Decorator) - 桥接模式(Bridge) - 组合模式(Composite) - 外观模式(Facade) - 享元模式(Flyweight) - 观察者模式(Observer) - 模板方法模式(Template Method) - 策略模式(Strategy) - 责任链...

    python实现常用的23种设计模式:含源代码、详细文档说明

    4、装饰模式【Decorator】 5、桥接模式【Bridge】 6、组合模式【Composite】 7、享元模式【Flyweight】 三、行为型模式 1、模板方法模式【Template Method】 2、观察者模式【Observer】 3、状态模式【State】 4、...

Global site tag (gtag.js) - Google Analytics