java学习笔记-设计模式8(装饰器模式)

意图

  动态地给一个对象添加一些额外的职责。就增加功能来说,Decorator模式相比生成子类更为灵活。

Source类是被装饰类,Decorator类是一个装饰类,可以为Source类动态的添加一些功能。

public interface Sourceable {
	public void method();
}
public class Source implements Sourceable{

	@Override
	public void method() {
		 System.out.println("this is original method!");
	}
}
public class Decorator implements Sourceable{

	private Source source;

	public Decorator(Source source){
		super();
		this.source = source;
	}

	@Override
	public void method() {
		System.out.println("before decorator!");
		source.method();
		System.out.println("after decorator!");
	}
}

  

  转自:http://blog.csdn.net/zhangerqing/article/details/8239539

 

时间: 2024-08-26 12:32:43

java学习笔记-设计模式8(装饰器模式)的相关文章

Java学习笔记——设计模式之九.建造者模式

 建造者模式(Builder),将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示. Product类: 1 package cn.happy.design_pattern._09builder; 2 3 import java.util.ArrayList; 4 import java.util.List; 5 6 public class Product { 7 8 List<String> parts = new ArrayList<>(); 9 10

java学习笔记-设计模式18(职责链模式)

意图 使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系.将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止. public interface Handler { public void operator(); } public abstract class AbstractHandler { private Handler handler; public Handler getHandler() { return handler; } public v

java设计模式之 装饰器模式

适AT java设计模式之 装饰器模式 装饰器模式 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构. 这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装. 这种模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,动态给一个对象添提供了额外的功能. 我们通过下面的实例来演示装饰器模式的用法.模拟一个人从想吃饭.找饭店.享受美食.结束吃饭的过程 代码展示: 首先创建一个被修饰的接口 Eat package deco

Java常用的设计模式07:常用设计模式之装饰器模式

1. Java之装饰器模式(Decorator Pattern) (1)概述:     装饰模式在Java种使用也很广泛,比如我们在重新定义按钮.对话框等时候,实际上已经在使用装饰模式了.在不必改变原类文件和使用继承的情况下,动态    地扩展一个对象的功能.它是通过创建一个包装对象,也就是装饰来包裹真实的对象.     装饰者模式:动态地给一个对象添加一些额外的职责,就像在墙上刷油漆一样.就增加功能来说,Decorator模式比生成子类更为灵活. Decorator模式的工作原理是:可以创建始

java设计模式之装饰器模式以及在java中作用

在JAVA I/O类库里有很多不同的功能组合情况,这些不同的功能组合都是使用装饰器模式实现的,下面以FilterInputStream为例介绍装饰器模式的使用  FilterInputStream和FilterOutputStream 首先,这两个都分别是InputStream和OutputStream的子类.而且,FilterInputStream和FilterOutputStream是具体的子类,实现了InputStream和OutputStream这两个抽象类中为给出实现的方法. 但是,F

java设计模式之七装饰器模式(Decorator)

顾名思义,装饰模式就是给一个对象增加一些新的功能,而且是动态的,要求装饰对象和被装饰对象实现同一个接口,装饰对象持有被装饰对象的实例,关系图如下: Source类是被装饰类,Decorator类是一个装饰类,可以为Source类动态的添加一些功能,代码如下: [java] view plaincopy public interface Sourceable { public void method(); } [java] view plaincopy public class Source im

java设计模式之装饰器模式

装饰器模式的应用场景:1.需要扩展一个类的功能.2.动态的为一个对象增加功能,而且还能动态撤销.(继承不能做到这一点,继承的功能是静态的,不能动态增删.) 源接口: 1 public interface Sourceable { 2 3 void method(); 4 } Source类: 1 public class Source implements Sourceable { 2 @Override 3 public void method() { 4 System.out.println

java学习笔记-设计模式9(代理模式)

意图 为其他对象提供一种代理以控制对这个对象的访问. public interface Sourceable { public void method(); } public class Source implements Sourceable{ @Override public void method() { System.out.println("this is original method!"); } } public class Proxy implements Source

java 设计模式 之 装饰器模式

装饰器模式的作用 在不修改原先对象核心的功能的情况下,对功能进行增强. 增强对象的功能的途径 通过类继承的方式,对父对象进行增强操作,例如造车是父类,改装跑车,跑车加大灯,改装房车,房车加私人电影院.如图: 通过这种方式做的装饰类会因为业务的复杂性激增 2.通过装饰模式,将方法增强.如图 装饰模式架构 car :被装饰的抽象类 package javadesign.decorate; /** * 抽象小汽车 */ public interface Car { public void buildC