`
wangkechao.dream
  • 浏览: 45851 次
  • 性别: Icon_minigender_1
  • 来自: 上海
博客专栏
352630cf-f670-3416-b946-55dec5cd787c
设计模式
浏览量:29968
社区版块
存档分类
最新评论

10.设计模式之装饰模式

阅读更多

装饰模式能够实现动态的为对象添加功能,是从一个对象外部来给对象添加功能。通常给对象添加功能,要么直接修改对象添加相应的功能,要么派生对应的子类来扩展,抑或是使用对象组合的方式。显然,直接修改对应的类这种方式并不可取。在面向对象的设计中,而我们也应该尽量使用对象组合,而不是对象继承来扩展和复用功能。装饰器模式就是基于对象组合的方式,可以很灵活的给对象添加所需要的功能。装饰器模式的本质就是动态组合。动态是手段,组合才是目的。总之,装饰模式是通过把复杂的功能简单化,分散化,然后再运行期间,根据需要来动态组合的这样一个模式。

 

来段代码看看吧

1. 组件接口

package designpattern.decorator;

/**
 * 组件接口
 * 
 * @author king
 */
public abstract class Component {
	//接口中的方法
	abstract void operation();
}

 2.组件的实现类

 

/**
 * 组件的实现类
 * 
 * 被装饰的类
 * 
 * @author king
 *
 */
public class ComponentImpl extends Component{
	//组件中运行的方法
	@Override
	public void operation() {
		System.out.println("组件正在运转");
	}
}

 3.抽象装饰器类

 

/**
 * 
 * 抽象装饰器类
 * 
 * @author king
 *
 */
public abstract class AbstractDecorator extends Component {
	
	protected Component component;
	
	public AbstractDecorator(Component component){
		this.component = component;
	}
	@Override
	void operation(){
		component.operation();//调用组件的一些方法
	}
}

 4. 装饰器的具体实现类

/**
 * 装饰器的具体实现类
 * 
 * @author king
 *
 */
public class ConcreteDecorator extends AbstractDecorator {
	public ConcreteDecorator(Component component) {
		super(component);
	}
	@Override
	//被增强的方法
	void operation() {
		System.out.println("执行组件之前.....");
		super.operation();
		System.out.println("执行组件之后.....");
	}
}

 5. 运行类

public class Main {
	
	public static void main(String[] args) {
		//实例 化一个组件
		Component component = new ComponentImpl();
		//对组件中用到的方法进行曾强
		AbstractDecorator componentAdvise = new ConcreteDecorator(component); 
		//调用增强后的方法
		componentAdvise.operation();
	}
}

 运行结果

执行组件之前.....

组件正在运转

执行组件之后.....

 

想到什么? Aop  对不对,是不是。

待续<aopJVM    cglib 实现>

 

返回导航

参考文档 <http://blog.csdn.net/hust_is_lcd/article/details/7884320

分享到:
评论

相关推荐

    【Java设计模式】《设计模式之禅》中的23种设计模式.zip

    【Java设计模式】《设计模式之禅》中的23种设计模式.zip 【Java设计模式】《设计模式之禅》中的23种设计模式.zip 【Java设计模式】《设计模式之禅》中的23种设计模式.zip 【Java设计模式】《设计模式之禅》中的23种...

    9.设计模式-装饰器模式1

    装饰器模式(Decorator Pattern)是一种结构型设计模式,它的核心思想是在不修改原有对象的前提下,通过包装(包裹)原对象并扩展其行为来增加功能。这种模式常用于在运行时动态地给对象添加新的职责,使得系统具有...

    54-Spring设计模式之装饰器模式1

    Spring 设计模式之装饰器模式详解 在软件设计中,经常会遇到需要在不修改原有代码的情况下,添加新的功能或行为。这时,装饰器模式便可以发挥其作用。在 Spring 设计模式中,装饰器模式是非常重要的一种设计模式。 ...

    java.设计模式大作业 薪资交付系统

    在Java编程领域,设计模式是一种解决常见问题的模板或最佳实践,它被广泛应用于构建可扩展、可维护的软件系统。在这个"薪资交付系统"的大作业中,我们可以预期会涉及多种设计模式,这些模式将帮助我们高效地组织代码...

    Java设计模式之禅

    《Java设计模式之禅》是一本深入浅出讲解设计模式的书籍,书中不仅包含23种经典设计模式的案例,还详细介绍了设计模式背后的思想和原则,适合初学者以及对设计模式有一定了解的程序员阅读。本书旨在帮助读者理解如何...

    设计模式_源代码大全.zip

    设计模式_源代码大全.zip 包括:1.简单工厂模式 2.策略模式 3.装饰模式 4.代理模式 5.工厂方法模式 6.原型模式 7.模板方法模型 8.外观模式 9.建造者模式 10.观察者模式 11.抽象工厂模式 12.状态模式 13.适配器模式 ...

    设计模式之装饰模式

    在给定的标题“设计模式之装饰模式”中,我们可以深入探讨以下几个方面: 1. **装饰模式的基本结构**:装饰模式通常包括四个角色:抽象组件(Component)接口,具体组件(Concrete Component)类,抽象装饰...

    设计模式之装饰者模式,内含可运行代码

    总的来说,装饰者模式是一种强大的设计模式,它提供了一种在运行时动态调整对象行为的方法,使得代码更具灵活性和可扩展性。通过理解和熟练运用装饰者模式,我们可以更好地应对软件需求的变化,提高代码的可维护性和...

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

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

    软件设计模式之装饰模式讲解

    软件设计模式之装饰模式讲解ppt,可用于教学课件。

    设计模式之装饰模式.docx

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

    C#设计模式之Decorator 装饰模式

    在"C#面向对象设计模式纵横谈(10):(结构型模式) Decorator 装饰模式.pdf"中,你可能会学习到如何定义这些角色以及它们之间的关系。装饰模式的代码结构清晰,易于理解和实现。通过阅读文档,你可以理解如何在C#中...

    JavaScript设计模式.pdf

    单体模式是JavaScript中最基本的设计模式之一。它的主要作用是提供一个命名空间,减少全局变量的数量,避免代码冲突,并组织代码使其易于维护。单体模式可以用来划分命名空间,组织代码和避免代码冲突。 2. 工厂...

    python实现23种设计模式.设计模式python语言版

    资源中包含的"23种设计模式.jpg"可能是设计模式的图表或总结,可以帮助理解和记忆各种模式。而"python爬虫js加密解密系列文章合集-云栖社区-阿里云.url"可能是一个链接,指向有关Python爬虫中使用设计模式解决JS加密...

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

    装饰者模式是面向对象设计模式的一种,主要用于动态地给一个对象添加一些额外的职责,而不会改变该对象的类。这种模式允许我们独立于对象的类来扩展对象的功能,为对象提供新的行为,同时保持了代码的可读性和可维护...

    深入理解JavaScript系列.chm

    29.设计模式之装饰者模式 30.设计模式之外观模式 31.设计模式之代理模式 32.设计模式之观察者模式 33.设计模式之策略模式 34.设计模式之命令模式 35.设计模式之迭代器模式 36.设计模式之中介者模式 37.设计模式之享...

    C++种设计模式 装饰模式.rar

    C++23种设计模式之 装饰模式。:当你向旧的类中添加新代码时,一般是为了添加核心职责或主要行为。而当需 要加入的仅仅是一些特定情况下才会执行的特定的功能时(简单点就是不是核心应用的功 能),就会增加类的...

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

    装饰模式是一种结构型设计模式,它允许在运行时向对象添加新的行为或责任,而无需修改对象的源代码。这种模式在软件工程中非常常见,因为它提供了灵活性,使得我们可以独立于对象的组合来扩展功能。 在C++中,装饰...

Global site tag (gtag.js) - Google Analytics