码迷,mamicode.com
首页 > 其他好文 > 详细

设计模式之装饰模式

时间:2017-04-11 13:05:48      阅读:135      评论:0      收藏:0      [点我收藏+]

标签:water   operation   static   csdn   灵活   name   alt   main   content   

定义:动态地给一个对象加入一些额外的职责,就添加功能来说,装饰模式比生成子类更为灵活。

结构图:

技术分享

演示样例代码:

public abstract class Component {

	 public abstract void operation();
}
public class ConcreteComponent extends Component{

	@Override
	public void operation() {
		// TODO Auto-generated method stub
		System.out.println("详细对象操作!");
	}

}
public class ConcreteDecoratorB extends Decorator {
	
	@Override
	public void operation() {
		// TODO Auto-generated method stub
		super.operation();
		System.out.println("详细装饰对象B的操作");
	}

	private void AddedBehavior() {
		System.out.println("我是B操作");
	}
}

public class ConcreteDecoratorA extends Decorator {

	private String addedState;
	
	@Override
	public void operation() {
		// TODO Auto-generated method stub
		super.operation();
		addedState = "New State";
		System.out.println("详细装饰对象A的操作");
	}

}
client代码例如以下所看到的:

public class Client {

	public static void main(String[] args) {
		
		ConcreteComponent c = new ConcreteComponent();
		ConcreteDecoratorA d1 = new ConcreteDecoratorA();
		ConcreteDecoratorB d2 = new ConcreteDecoratorB();
		d1.setComponent(c);
		d2.setComponent(d1);
		d2.operation();
//		d1.setComponent(d2);
//		d1.operation();
	}

}
执行结果例如以下:

详细对象操作!
详细装饰对象A的操作
详细装饰对象B的操作


设计模式之装饰模式

标签:water   operation   static   csdn   灵活   name   alt   main   content   

原文地址:http://www.cnblogs.com/liguangsunls/p/6692972.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!