decorator - 对象结构模式

  1.意图
            动态的给一个对象添加一些职责,decorator模式比生成子类更灵活
    2.参与者
      Compoment   - 定义一个对象接口,可以给这些对象动态的添加职责
      ConcreteCompoment  - 定义一个对象,可以给这个对象动态地添加职责
      Decorator - 维持一个指向component对象的指针,并定义一个与component
                                   接口一致的接口。
      ConcreteDecorator - 向组件添加职责。

 3.结构

代码:

public interface Compoment {
 void operation();
}

public class ConcreteCompoment implements Compoment {

	@Override
	public void operation() {
		System.out.println("ConcreteCompoment operation");
	}

}

public class Decorator implements Compoment {
	Compoment compoment = null;
	Decorator(Compoment compoment){
		this.compoment = compoment;
	}
	@Override
	public void operation() {
		compoment.operation();
	}

}

public class ConcreteDecoratorA extends Decorator {

	ConcreteDecoratorA(Compoment compoment) {
		super(compoment);
	}
	@Override
	public void operation() {
		super.operation();
		addBehavior();
	}
	private void addBehavior(){
		System.out.println("ConcreteDecoratorA addBehavior");
	}
}

public class ConcreteDecoratorB extends Decorator {

	ConcreteDecoratorB(Compoment compoment) {
		super(compoment);
	}

}

public class Client {
	public static void main(String[] args) {
		ConcreteDecoratorA A = new ConcreteDecoratorA(new ConcreteCompoment());
	    A.operation();
	}
}

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值