Java语言实现的装饰设计模式复习

原创 2015年11月20日 16:33:43

1 装饰设计模式概述

(1)在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。
(2)当想要对已有的对象进行功能增强时,可以定义一个类,将已有的对象传入,基于已有的功能来提供加强功能,这个自定义的类就被称为装饰类。装饰类通常会通过其构造方法接收被装饰类的对象,并基于被装饰类对象的功能提供更强的功能。

2 装饰设计模式特点

(1)装饰对象和真实对象有相同的接口。这样客户端对象就能以和真实对象相同的方式和装饰对象交互。
(2)装饰对象包含一个真实对象的引用(reference)。
(3)装饰对象接受所有来自客户端的请求。它把这些请求转发给真实的对象。
(4)装饰对象可以在转发这些请求以前或以后增加一些附加功能。这样就确保了在运行时,不用修改给定对象的结构就可以在外部增加附加的功能。在面向对象的设计中,通常是通过继承来实现对给定类的功能扩展。

3 装饰设计模式演示

package captain;

//装饰设计模式演示。
public class DecoratorDemo {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Person p = new Person();//创建被装饰类对象
		SuperPerson sp = new SuperPerson(p);//创建装饰类对象,将被装饰类对象作为参数
		sp.superEat();//装饰类对象调用装饰类中增强的方法
	}

}

//被装饰类
class Person{
	public void eat(){//被装饰类中的基本方法
		System.out.println("eat food");
	}
}

//装饰类
class SuperPerson{
	private Person p;//被装饰类的对象引用作为装饰类的成员变量
	SuperPerson(Person p){//将被装饰类对象作为参数传递给装饰类的构造函数
		this.p = p;
	}
	public void superEat(){//基于被装饰类中基本方法的增强方法
		p.eat();//被装饰类对象调用被装饰类中的基本方法
		System.out.println("drink wine");
	}
}
注意:装饰设计模式比继承要灵活,避免了继承体系的臃肿,并且降低了类与类之间的关系。Java I/O流中存在典型的装饰设计模式应用。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Java语言实现的单例设计模式复习

1 单例设计模式概述 设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。...

设计模式之单例模式java语言的实现

设计模式之单例模式的实现,编程语言是使用的java

java语言实现创建型设计模式—单例模式

一、描述 单例模式就是确保一个类只有一个实例对象,并且在实例对象必须自动创建,对外不提供该对象的构造方法,并向整个系统提供该实例。使用单例模式相当于整个系统共用该类的实例对象,对于java中的并发访问...

java语言实现创建型设计模式—原型模式(Prototype)

一、描述 原型模式是通过一个原型对象来标明要创建的对象的类型,然后用复制这个原型对象的方法来拷贝创建更多的同类型对象。例如我们在程序的动态运行过程中有了一个对象,这个对象中包含了一系列的有效数据,我们...

java语言实现创建型设计模式—抽象工厂模式

一、描述 抽象工厂模式是在工厂方法的模式上进一步抽象而来,如果说工厂方法模式是对一个产品结构的创建而言的话,那么抽象工厂模式则是针对多个产品结构而言的,它被用来一次创建多个不同的产品对象。 我们要创建...

java语言实现创建型设计模式—创建者模式

一、描述 创建者模式单独利用一个创建者类来创建对象并组建对象之间的关系,以简化客户端调用的复杂性。相对于抽象方法模式来说,创建者模式增加了一个单独的用于组装对象和对象之间关系的创建者类,由该类来负责对...

java语言实现结构型设计模式—适配器模式

一、描述 适配器模式就是讲一个系统的接口转换成另外一种形式,从而使原来不能直接调用的接口变得可以调用。例如我现在有一份List类型的用户名单,但是我的系统需要一份Map类型的用户名单,所以我就需要写...

java语言之单例设计模式

1.  非多线程下的单例设计模式     设计模式:对问题行之有效的解决方式,其实,它是一种思想。     单例设计模式解决的问题:就是可以保证一个类在内存中的对象唯一性。     比如多个程序...

设计模式之简单工厂类(Java语言)

operation类,这是一个抽象类,是所有运算类的父类。抽象方法是getResult(),供子类实现从而实现具体的运算功能public abstract class Operation { /...

java语言讲解singleton的编程思想---深入浅出单实例Singleton设计模式

深入浅出单实例Singleton设计模式前序单实例Singleton设计模式可能是被讨论和使用的最广泛的一个设计模式了,这可能也是面试中问得最多的一个设计模式了。这个设计模式主要目的是想在整个系统中只...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java语言实现的装饰设计模式复习
举报原因:
原因补充:

(最多只允许输入30个字)