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

装饰模式

时间:2016-08-04 10:36:18      阅读:180      评论:0      收藏:0      [点我收藏+]

标签:

定义:动态地给一个对象添加一些额外的职责

类图:

技术分享

代码:

public abstract class Component {

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

	@Override
	public void doSomething() {
		// TODO Auto-generated method stub
		
	}

}

public abstract class Decorator extends Component{
  
	private Component component = null;
	
	public Decorator(Component component){
		this.component = component;
	}
	
	@Override
	public void doSomething(){
		component.doSomething();
	}
}

public class ConcreteDecorator extends Decorator{

	public ConcreteDecorator(Component component) {
		super(component);
		// TODO Auto-generated constructor stub
	}

	private void methods1(){
		
	}
	

	public void doSomething(){
		methods1();
		super.doSomething();
	}
}

优点:

装饰类和被装饰类可以独立发展

装饰模式是继承关系的一个替代方案

装饰模式可以动态的扩展一个实现类的功能


缺点:

多层的装饰比较复杂


使用场景

需要扩展一个类的功能

需要动态地给一个对象增加功能


装饰模式

标签:

原文地址:http://blog.csdn.net/renpengddxx/article/details/52116020

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