`

java模式之装饰者模式

 
阅读更多

         装饰者模式在java的设计模式中属于比较重要和常见的模式,在java的IO设计就设计到很多的装饰者模式。从最简单的装饰者模式开始说起。

         首先定义一个接口Base

         

package com.luchi.model.wrapper;

public interface Base {
	
	
	public void doThings1();
	

}

       在接口中定义一个方法doThings1();

 

 

 

      再来定义一个被包装类

 

 

     

package com.luchi.model.wrapper;

public class WrapperCLass1  implements Base{

	@Override
	public void doThings1() {
		// TODO Auto-generated method stub
		
		System.out.println("I am wrapper class1");
		
	}

}

 

 

   然后定义一个包装类

 

   

package com.luchi.model.wrapper;

public class WrapperClass2 implements Base{

	private Base baseObject;
	
	public WrapperClass2(Base baseObject){
		this.baseObject=baseObject;
		
	}
	@Override
	public void doThings1() {
		// TODO Auto-generated method stub
		
		System.out.println("I am wrapper class 2");
		baseObject.doThings1();
		System.out.println("I am wrapper class 2");
		
	}

}

 

 

   最后测试类

 

package com.luchi.model.wrapper;

public class TestWrapper {
	
	
	public static void main(String[]args){
		
		WrapperCLass1 wrapper1=new WrapperCLass1();
		WrapperClass2 wrapper2=new WrapperClass2(wrapper1);
		wrapper2.doThings1();
	}

}

 

 

   来看下测试结果:

   I am wrapper class 2

   I am wrapper class1

   I am wrapper class 2

 

    这是常见的设计模式,包括在动态代理中也会用到这个模式的思想,只不过动态代理设计到源代码编译会比较复杂。  

    在javaIO设计模式中,很容易看到这一个模式的设计身影

    

                        ┌BufferedInputStream

                        ├DataInputStream

              ┌FilterInputStream┼LineNumberInputStream

              ├FileInputStream └PushbackInputStream

              ├ByteArrayInputStream

     ┌InputStream──┼PipedInputStream

     │        ├SequenceInputStream

     │        ├StringBufferInputStream

     │        └ObjectInputStream ┌BufferedOutputStream

     │         ┌FilterOutputStream┼DataOutputStream

  Object┤         ├FileOutputStream └PrintStream

     ├OutputStream──┼ByteArrayOutputStream

     ├File       ├PipedOutputStream

     ├FileDescriptor └ObjectOutputStream

     ├ObjdecStreamClass

     ├RandomAccessFile

     └StreamTokenizer

 

      我们常见使用的BufferedInputStream buff=new BufferedInputStream(new FileInputStream(""));这句话就使用了装饰者模式,见微知著,javaIO还有很多的方面用到了这种设计模式

 

 

分享到:
评论

相关推荐

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

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

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

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

    Java设计模式-装饰者模式

    本章可以称为“给爱用继承的人一个全新的设计眼界”。我们即将再度探讨典型...一旦你熟悉了装饰者的技巧,你将能够在不修改任何底层代码的情况下,给你的(或别人的)对象赋予新的职责。——《Head First 设计模式》

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

    在"JAVA设计模式之装饰模式代码"的示例中,我们可能会看到以下类结构: - `Component`:定义了装饰模式的基本接口,例如`Coffee`接口,包含了一些基本行为如`prepare()`。 - `Coffee`:实现了`Component`接口,代表...

    java装饰者模式实现

    在Java中,装饰者模式通常通过继承和组合来实现,尤其适用于那些需要扩展对象功能但又不想改变其原有结构的情况。 在给定的描述中,"豆浆、加糖、加鸡蛋、加黑豆"的例子很好地诠释了装饰者模式的应用。豆浆是基础...

    Java IO 与 装饰模式

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

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

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

    基于Java工厂、装饰者、策略、责任链模式的办公座椅销售系统

    利用工厂模式、装饰者模式、策略模式、责任链模式进行设计与实现。工厂模式完成办公椅不同种类的生成,装饰者模式完成给办公椅添加配件,策略模式完成不同打折算法的自动更替,责任链模式以及反射机制完成不同职位...

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

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

    java设计模式之装饰模式

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

    java设计模式【之】装饰者模式【源码】【场景:煎饼果子+肠+蛋】

    java设计模式【之】装饰者模式【源码】【场景:煎饼果子+肠+蛋】 * 测试类【之】煎饼果子来一套 * * 不改变原有对象的基础上,强化已经存在的功能 * 被装饰者与装饰者实现同一个抽象或接口 * 装饰后,最终还是...

    设计模式之装饰模式 Java代码实现

    标题中的"设计模式之装饰模式 Java代码实现"意味着我们将探讨如何用Java语言来实现装饰模式。这通常包括以下几个步骤: 1. **定义组件接口**:首先,我们需要一个接口或者抽象类(Component),它定义了对象的基本...

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

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

    java 装饰模式

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

    java装饰者模式代码

    在Java中,装饰者模式通常通过继承和组合来实现,它是一种结构型设计模式。 装饰者模式的核心思想是通过将对象包装在一个装饰类中,来扩展其功能,而不是通过改变原有类的代码。这样做的好处在于保持了原始类的简洁...

    设计模式 - 装饰者模式.rar

    - **ConcreteComponent(具体组件)**:实现了Component接口的类,是装饰模式要装饰的目标对象。它定义了初始行为,不包含任何额外装饰。 - **Decorator(装饰者)**:持有对Component对象的引用,并且实现...

    装饰者模式源代码java

    在Java中,装饰者模式通常通过接口或者抽象类来实现。 首先,我们来看装饰者模式的基本结构。通常,有一个抽象组件(Component)类,它是所有具体组件(Concrete Component)的父类,定义了组件的基本行为。接着,...

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

    装饰模式是一种设计模式,它是结构型模式之一,用于在运行时动态地给对象添加新的功能。这个模式的主要目的是为了在不改变对象自身的基础上,通过包裹一个对象并扩展其行为,来实现对对象功能的增强。Java中的装饰...

    Java 经典设计模式讲解以及项目实战

    9 装饰模式 10 原型模式 11 委派模式 12 适配器模式 设计模式综合运用 1 门面+模版方法+责任链+策略 2 门面+模版方法+责任链+策略+工厂方法 3 动态代理+Spring AOP 4 责任链模式进阶 Spring Framework设计模式 ...

Global site tag (gtag.js) - Google Analytics