JAVA系列-设计模式-装饰者模式

这个比较好理解。

定义:

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

package Decorator;

/**
 * 定义一个对象接口,可以给这些对象动态地添加职责。
 * @author Administrator
 *
 */
public interface Work{ 
	public void insert();
}
 

package Decorator;

/**
 * 接口Work有一个具体实现:插入方形桩

 * @author Administrator
 *
 */
public class SquarePeg implements Work{
	public void insert(){
		System.out.println("方形桩插入");
		} 
	}
	 

package Decorator;

import java.util.ArrayList;
import java.util.ListIterator;

/**
 * 
 * 
 * 
 * 现在有一个应用:需要在桩打入前,挖坑,在打入后,在桩上钉木板,这些额外的功能是动态,可能随意增加调整修改, 
 * 比如,可能又需要在打桩之后钉架子(只是比喻).
 * 那么我们使用Decorator模式,这里方形桩SquarePeg是decoratee(被刷油漆者),
 * 我们需要在decoratee上刷些"油漆",这些油漆就是那些额外的功能.
 * 
 * @author Administrator
 * 
 */
public class Decorator implements Work {

	private Work work;
	// 额外增加的功能被打包在这个List中
	private ArrayList others = new ArrayList();

	// 在构造器中使用组合new方式,引入Work对象;
	public Decorator(Work work) {
		this.work = work;
		others.add("挖坑");
		others.add("钉木板");
	}

	public void insert() {

		newMethod();
	}

	// 在新方法中,我们在insert之前增加其他方法,这里次序先后是用户灵活指定的
	public void newMethod() {
		otherMethod();
		work.insert();
	}

	public void otherMethod() {
		ListIterator listIterator = others.listIterator();
		while (listIterator.hasNext()) {
			System.out.println(((String) (listIterator.next())) + " 正在进行");
		}
	}
}

package Decorator;

/**
 * 动态地给一个对象添加一些额外的职责。就增加功能来说,Decorator模式相比生成子类更为灵活。
 * @author Administrator
 *
 */
public class Test {
	public static void main(String args[]){
		Work squarePeg = new SquarePeg(); 
		Work decorator = new Decorator(squarePeg);
		decorator.insert(); 
	}
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值