`

装饰模式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在思想上有共同之处。
分享到:
评论

相关推荐

    设计模式之装饰模式(Decorator Pattern)

    装饰模式(Decorator Pattern)是一种结构型设计模式,它在不改变原有对象的基础上,通过包裹一个对象并为其添加新的行为或责任,实现对对象功能的扩展。这种模式在软件开发中非常常见,尤其当需要在运行时动态改变...

    c++-设计模式之装饰模式(Decorator)

    装饰模式(Decorator Pattern)是一种结构型设计模式,允许在不改变对象接口的情况下,动态地为对象添加额外的职责或功能。装饰模式通常用于需要扩展对象功能而又不希望使用子类化的场景。 装饰模式的组成 组件接口...

    设计模式C++学习之装饰模式(Decorator)

    在C++编程语言中,装饰模式常用于动态地扩展类的功能,使得类的行为在运行时可以被改变,而不会破坏封装性。 装饰模式的核心思想是通过将一个类包装在一个与它具有相同接口的装饰类中来实现。装饰类通常包含一个...

    装饰者模式——Decorator

    装饰者模式(Decorator)是一种设计模式,用于在运行时动态地给对象添加额外的责任或功能。它是结构型设计模式的一种,能将行为的增加与对象的创建分离,使得我们可以独立地扩展对象的功能。 在Java或其他面向对象...

    java Decorator装饰模式例子

    在Java中,装饰模式通常通过继承和组合来实现,使得代码具有更好的扩展性和灵活性。下面将详细探讨装饰模式的核心概念、结构、优点以及如何通过示例代码`decoratorDemo`来理解这一模式。 **装饰模式的核心概念** 1...

    设计模式之 Decorator模式和代码实现

    【Decorator模式】是一种设计模式,它允许在运行时动态地给对象...在实际的软件开发中,Decorator模式同样适用于那些需要动态增减功能的对象,例如在UI设计中添加装饰元素,或者在数据库连接池中添加不同的连接策略等。

    [结构型模式] head first 设计模式之装饰者模式(decorator)

    装饰者模式(Decorator Pattern)是结构型设计模式之一,它允许动态地给一个对象添加新的功能,而无需修改其原有代码。这个模式的核心思想是通过将对象封装在一个包装器(Decorator)中来扩展其行为,而包装器和原始...

    Java设计模式之-Decorator装饰模式

    Decorator模式,也称为装饰模式,是设计模式中的一个重要组成部分,它在不改变原有对象接口的前提下,动态地给对象添加新的功能,从而扩展了对象的能力。这篇博客()将深入探讨这个模式的细节。 装饰模式的核心...

    装饰模式——装饰模式.doc

    通过组合多个装饰器,我们可以动态地改变对象的行为,而不需要修改原有对象的代码。此外,由于装饰器和组件具有相同的接口,因此装饰后的对象可以像原始对象一样使用,降低了系统的耦合度。然而,装饰模式可能会导致...

    Decorator装饰者模式

    在装饰者模式中,我们通常有两个主要的角色:Component(组件)和Decorator(装饰器)。Component是被装饰的对象接口,定义了所有装饰器和原始对象共同拥有的行为。Concrete Component是Component的具体实现,是实际...

    Head First 设计模式 (三) 装饰者模式(decorator pattern) C++实现

    总结起来,装饰者模式在C++中的实现提供了动态组合新功能的能力,使得系统更加灵活,避免了使用继承带来的类爆炸问题。通过定义接口和一系列装饰者,我们可以根据需要自由组合和扩展对象的行为,这在软件设计中是...

    设计模式之装饰模式.docx

    装饰模式(Decorator Pattern)是一种结构型设计模式,用于动态地给一个对象添加一些额外的职责。该模式允许在不修改原有对象的情况下,动态地改变对象的行为。 定义与结构 装饰模式由四个角色组成: 1. 抽象构件...

    设计模式 t07Decorator

    总结来说,“设计模式 t07Decorator”着重介绍的是如何使用装饰者模式来动态地扩展对象的功能,它强调了面向对象设计中的灵活性和可扩展性,是软件开发中一个重要的设计原则和工具。通过理解和应用装饰者模式,我们...

    设计模式 - 装饰模式(C++实例)

    在C++中,装饰模式通常涉及到继承和组合。它通过创建一个包装器对象,该对象包含对原始对象(也称为组件)的引用,并扩展其行为。装饰类通常具有与被装饰类相同的接口,这样客户端代码可以透明地处理装饰对象和原始...

    设计模式--装饰者模式java例子

    装饰者模式是软件设计模式中的一种结构型模式,它的主要目的是动态地给对象添加新的功能,而无需修改原有代码。在Java中,装饰者模式通常通过继承和组合来实现,它提供了一种比继承更灵活的方式来扩展对象的功能。...

    设计模式之装饰者(Decorator)

    总之,装饰者模式是一种强大的设计工具,它通过组合而非继承来扩展对象的功能,避免了因为类的爆炸性增长而带来的复杂性。在C++中,通过合理使用装饰者模式,我们可以构建出更加灵活、可维护的软件系统。

    WPF 装饰器Decorator 和 Adorner综合实例

    装饰器模式是一种设计模式,它允许我们在不修改原有对象的基础上,为对象添加新的行为或属性。在WPF中,Decorator类通常用于改变控件的外观,如添加边框、背景等。以标题中提到的"自定义边框"为例,我们可以创建一个...

    Decorator 装饰模式

    装饰模式的核心在于装饰者(Decorator)类,它实现了与被装饰者(Component)相同的接口,使得装饰者可以与被装饰的对象无缝对接。 在Java或其他面向对象的语言中,装饰模式通常通过继承和组合来实现。装饰者持有对...

Global site tag (gtag.js) - Google Analytics