`
gongjiayun
  • 浏览: 159252 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

Java装饰模式

阅读更多
Java装饰模式
装饰模式:给一个类添加一些额外的职责,并且在添加这些额外的职责时不会控制该类的执行逻辑。

UML类图:


组成部分:
抽象构件:原始的功能接口
具体构件:具体的原始功能类
装饰角色:持有具体构件类的对象,以便执行原有功能
具体装饰:具体扩展的功能在这里

下面看一个对开车功能拓展的实例(晚上+开车):
抽象构件:
package com.gjy.drector;

/**
 * 抽象接口,规范准备接收附加责任的对象
 * @author gjy
 */
public interface Component {
	public void operation();
}

具体构件:
package com.gjy.drector;

/**
 * 接收附加责任, 此类型的类可以有多个, 只对应一个Decorator类
 * @author gjy
 */
public class ConcreteComponent implements Component {
	public ConcreteComponent(){}
    public void operation()
    {
           System.out.println("开车");
    }
}

装饰角色:
package com.gjy.drector;

/**
 * 装饰角色,持有一个构件(Component)对象的实例,并定义一个与抽象构件接口一致的接口
 * @author gjy
 */
public class Decorator implements Component {
	private Component component;
    public Decorator(){}

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

    public void operation() {
           component.operation();
    }
}

具体装饰:
package com.gjy.drector;

/**
 * 添加附加责任
 * @author gjy
 */
public class ConcreteDecorator extends Decorator {

	public ConcreteDecorator(){}

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

    public void operation()
    {
    	 this.addedOperation();
         super.operation();
    }

    public void addedOperation()
    {
           System.out.println("晚上");
    }
}

测试:
package com.gjy.drector;

/**
 * 客户端类
 * @author gjy
 */

public class Client {
       public static void main(String[] args) {
              Component component = new ConcreteComponent();
              Decorator decorator = new ConcreteDecorator(component);
              //客户端不变, 但已增加了责任
              decorator.operation();
              
       }
}

输出结果:
晚上
开车
分享到:
评论
3 楼 guoyanwei_ok 2014-05-27  
也赞成2楼的说法。
2 楼 851228082 2014-04-10  
这个例子,跟静态代理类完全一样呀。
1 楼 lizhen6669 2014-03-20  
不错,写的很清晰。学习了

相关推荐

    java装饰模式

    ### Java装饰模式详解 #### 一、装饰模式概述 装饰模式是一种结构型设计模式,它允许向对象添加新的功能,而无需修改其原有结构。这种模式通过创建包含其他对象的对象来扩展功能,使得可以在不破坏封装性的前提下...

    java 装饰模式

    在Java中,装饰模式通常通过继承和组合来实现,它为对象提供了增加新功能的方式,同时保持了对象的接口不变。这种方式使得我们可以动态地给一个对象添加一些额外的职责,而不会影响到其他对象。 装饰模式的核心思想...

    java装饰模式及动态代理模式示例源码

    装饰模式和动态代理模式是Java编程中两种非常重要的设计模式,它们都在代码的扩展性和灵活性方面发挥着关键作用。下面将分别对这两种模式进行详细解释,并结合手写的数据库连接池和动态代理模式的使用进行深入探讨。...

    java装饰模式示例代码及类图

    Java中的装饰模式通常涉及到继承和组合的使用。 在给定的资料中,我们可以看到以下几个关键的文件: 1. `Compoent.java`:这是组件接口或抽象类,定义了装饰模式的基本行为。所有具体组件(ConcreteCompoent)和...

    java 装饰模式 设计模式

    在Java中,装饰模式的核心在于抽象组件(Component)接口、具体组件(Concrete Component)类、抽象装饰(Decorator)类以及具体装饰(Concrete Decorator)类。首先,我们定义一个抽象组件接口,它定义了所有组件...

    java装饰模式实例

    通过设计组装和升级大众CC来说明装饰模式,有一个VolkCC类实现Volk接口,设计一个CCDecorator实现Volk这个接口,在ConcreteCCDecorator这个具体装饰角色中进行功能的增加和重写。

    利用装饰模式,实现编写项目经理接到一个项目,需要完成编码

    装饰模式是一种设计模式,它允许在不改变对象自身的情况下,动态地给对象添加新的行为或职责。这种模式常用于在不修改源代码的情况下扩展对象的功能,或者为对象提供额外的职责。在本例中,"项目经理接到一个项目,...

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

    在Java中,装饰者模式通常通过继承和组合来实现,它提供了一种比继承更灵活的方式来扩展对象的功能。下面将详细讲解装饰者模式的核心概念、工作原理以及如何在Java中应用。 ### 一、装饰者模式的基本概念 1. **...

    JAVA设计模式之装饰模式代码

    在Java中,装饰模式通常通过继承和组合来实现,提供了比子类化更灵活的方式来扩展对象的功能。 装饰模式的核心概念包括以下几个部分: 1. 抽象组件(Component):定义一个接口,所有目标对象和装饰对象都要实现这...

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

    装饰模式是一种设计模式,属于结构型模式,其主要目的是在不改变对象本身的基础上,通过向对象添加新的行为或属性来扩展其功能。这种模式遵循“开闭原则”,即对扩展开放,对修改关闭。 在装饰模式中,有四个关键...

    java 装饰模式(Decorator Pattern)详解及实例代码

    【Java 装饰模式详解】 装饰模式(Decorator Pattern)是一种结构型设计模式,它可以在不修改原有对象的基础上,通过添加新的职责来扩展对象的功能。装饰模式的核心在于它定义了一个与原类一致的接口,使得装饰类和...

    Java装饰模式(Decorator模式)

    Java装饰模式,也被称为Decorator模式,是一种设计模式,它允许在运行时向对象添加新的行为或职责,而不必通过继承的方式来扩展类。这种模式提供了一种比使用子类更加灵活的方式来扩展对象的功能。 装饰模式的核心...

    详解java装饰模式(Decorator Pattern)

    【Java装饰模式(Decorator Pattern)】装饰模式是一种结构型设计模式,它允许在不修改已有对象的基础上,通过添加额外的功能来扩展对象的行为。这种模式的关键在于装饰类与被装饰类有相同的接口,使得它们可以互换...

    JAVA设计模式学习12——装饰器模式

    2. **动态性**:装饰模式允许我们在运行时动态地为对象添加新功能,而无需修改代码。 3. **组合性**:通过多个装饰者的叠加,可以实现更复杂的功能,这比使用继承来扩展功能更加灵活。 4. **职责分离**:装饰者模式...

    Java IO 与 装饰模式

    Java IO 与 装饰模式 在Java编程中,输入输出(IO)处理是程序设计中的重要组成部分,用于读取、写入和处理数据。Java IO库提供了一整套类来支持各种类型的输入输出操作,包括文件、网络、内存等。而装饰模式是一种...

    java设计模式之装饰者模式代码

    在Java中,装饰者模式通常涉及到继承和接口的使用。装饰者模式的核心思想是,定义一个抽象组件接口(Component),然后创建一个实现了这个接口的类(ConcreteComponent)。接着,创建一个抽象装饰者接口(Decorator...

    Java设计模式-装饰者模式

    本章可以称为“给爱用继承的人一个全新的设计眼界”。我们即将再度探讨典型滥用问题。你将在本章学到如何使用对象组合的方式,做到在运行时装饰类。为什么呢?一旦你熟悉了装饰者的技巧...——《Head First 设计模式》

    装饰模式小猪快跑游戏模拟

    装饰模式是一种设计模式,它允许我们在不修改原有对象的基础上,通过添加新的行为或属性来扩展对象的功能。在"装饰模式小猪快跑游戏模拟"这个实例中,我们看到这种模式被巧妙地应用到了一个名为“小猪吃苹果”的游戏...

    java设计模式之装饰模式

    装饰模式(Decorator Pattern)是Java设计模式中的一种结构型模式,它允许在运行时动态地向对象添加新的行为或职责,而不会破坏封装性。这种模式可以用来将多个功能组合在一起,同时保持类的可扩展性和灵活性。在...

    JAVA设计模式(java设计)

    - 装饰模式:动态地给对象添加一些额外的职责,比继承更加灵活。 - 外观模式:为复杂的子系统提供一个简单的接口。 - 代理模式:为其他对象提供一种代理以控制对这个对象的访问。 - 模板方法模式:定义一个操作...

Global site tag (gtag.js) - Google Analytics