`
shiwuyisheng
  • 浏览: 66451 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

java实现装饰模式

阅读更多

组件接口

package sample.decorator;

abstract public interface IComponent {
	abstract public void doSomething();
}

源头组件

package sample.decorator;

public class Source implements IComponent {

	@Override
	public void doSomething() {
		System.out.println("<<<<<< print Ticker");
	}

}

 

抽象装饰类

package sample.decorator;

abstract public class abstractDecorator implements IComponent {
	private IComponent last;

	public abstractDecorator(IComponent myComponent) {
		super();
		this.last = myComponent;
	}

	public void callLast() {
		if (last != null) {
			last.doSomething();
		}
	}
}

 

具体装饰类1-4

package sample.decorator;

public class Decorator1 extends abstractDecorator {

	public Decorator1(IComponent myComponent) {
		super(myComponent);
		// TODO Auto-generated constructor stub
	}

	@Override
	public void doSomething() {
		System.out.println("<<<<<< Decorator1");
		super.callLast();
	}

}
 
package sample.decorator;

public class Decorator2 extends abstractDecorator {

	public Decorator2(IComponent myComponent) {
		super(myComponent);
		// TODO Auto-generated constructor stub
	}

	@Override
	public void doSomething() {
		System.out.println("<<<<<< Decorator2");
		super.callLast();
	}

}

 

package sample.decorator;

public class Decorator3 extends abstractDecorator {

	public Decorator3(IComponent myComponent) {
		super(myComponent);
		// TODO Auto-generated constructor stub
	}

	@Override
	public void doSomething() {
		System.out.println("<<<<<< Decorator3");
		super.callLast();
	}

}

 

package sample.decorator;

public class Decorator4 extends abstractDecorator {

	public Decorator4(IComponent myComponent) {
		super(myComponent);
		// TODO Auto-generated constructor stub
	}

	@Override
	public void doSomething() {
		System.out.println("<<<<<< Decorator4");
		super.callLast();
	}

}

 工厂类 

package sample.decorator;

public class Factory {

	public IComponent getComponent() {
		IComponent myComponent;
		myComponent = new Source();
		myComponent = new Decorator1(myComponent);
		myComponent = new Decorator2(myComponent);
		myComponent = new Decorator3(myComponent);
		myComponent = new Decorator4(myComponent);
		return myComponent;
	}

}

 

主函数

package sample.decorator;

public class Client {
	public static void main(String[] args) {
		Factory myFactory = new Factory();
		IComponent myComponent = myFactory.getComponent();
		myComponent.doSomething();
	}
}

 附件是项目代码

分享到:
评论

相关推荐

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

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

    java装饰者模式实现

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

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

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

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

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

    Java IO 与 装饰模式

    查看Java IO的源码,可以深入理解装饰模式的实现。每个装饰类通常会持有一个被装饰的对象(即基类的实例),并通过方法委托调用来保持原有行为的同时添加新的功能。比如,`BufferedInputStream`的`read()`方法会先...

    装饰模式实现AOP

    3. **实现装饰器**:然后,我们创建装饰器类,它实现Component接口并持有Component对象的引用。装饰器可以在调用Component方法前后增加额外的行为,这就是AOP中的“通知”(advice)。 4. **组装对象**:在运行时,...

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

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

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

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

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

    在Java中,装饰模式通常通过继承实现,一个装饰类会持有原对象的引用,并在其基础上增加新的方法或增强已有方法。例如,在数据库连接池中,我们可以创建一个基础的数据库连接类,然后通过装饰器类来添加连接池管理的...

    设计模式之装饰模式Java实现和类设计图

    标题中的“设计模式之装饰模式Java实现”指的是使用Java语言来实现装饰模式。装饰模式的核心思想是通过将对象包装在一个装饰类中,动态地给对象增加新的功能,而不是通过改变原有类的代码。这样可以保持原类的简洁性...

    java 装饰模式

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

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

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

    常用设计模式java实现

    设计模式是软件工程中经过长期实践总结出的通用解决方案,它们描述了在特定情况下如何解决...通过阅读和学习提供的"常用设计模式java实现"压缩包中的例子,可以更好地理解和实践这些设计模式,从而提升Java编程技能。

    java装饰模式

    在Java中,装饰模式常常用于实现类层次结构中行为的动态扩展,特别是在处理输入/输出流(如`InputStream`和`OutputStream`)时尤为常见。通过一层层地包装基础流,可以在不改变原始类的情况下为其添加更多的功能或...

    java Decorator装饰模式例子

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

    【资源免费下载】Java代码积累丨大话设计模式(Java实现版本)、线程协作

    装饰模式 外观模式 享元模式 代理模式 行为模式(类行为模式) 解释器模式 模板方法模式 行为模式(对象行为模式) 策略模式 观察者模式 状态模式 导入模式 迭代器模式 命令模式 职责链模式 进来者模式 访问者模式 ...

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

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

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

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

    23三种设计模式java实现

    下面将详细介绍这三类设计模式以及它们在Java中的实现。 1. **创建型设计模式** - **单例模式**:确保一个类只有一个实例,并提供全局访问点。在Java中,可以通过双重检查锁定(Double-Checked Locking)或者静态...

Global site tag (gtag.js) - Google Analytics