第九篇 設計模式--裝飾模式

定義:動態地給一個對象添加一些額外的職責。就增加功能來說,裝飾模式相比生成子類更加靈活。

代碼:


package decorator_model;

/**
 * @author naivor
 *		裝飾模式-場景類
 */
public class DecoratorModel {
	public static void main(String [] args){
		ConcreteComponent component=new ConcreteComponent();
		FunctionA functionA=new FunctionA();
		FunctionB functionB=new FunctionB();
		
		functionA.setComponent(component);	//給component動態添加功能A和B
		functionB.setComponent(functionA);	
		
		functionB.operate();		
	}
}
/**
 * 
 * @author naivor
 *		裝飾模式-功能抽象類
 */
abstract class Component{
	public abstract void operate();
}
/**
 * 
 * @author naivor
 *		裝飾模式-具體功能類
 */
class ConcreteComponent extends Component{

	@Override
	public void operate() {
		//具體的業務處理方法
	}
	
}
/**
 * 
 * @author naivor
 *		裝飾模式-裝飾者類
 */
class Decorator extends ConcreteComponent{
	private ConcreteComponent component;
	
	public Decorator() {
		
	}
	public void setComponent(ConcreteComponent component) {
		this.component=component;
	}
	
	@Override
	public void operate() {
		if (component!=null) {
			component.operate();
		}
	}
}
/**
 * 
 * @author naivor
 *		裝飾模式-擴展功能A類
 */
class FunctionA extends Decorator{
	@Override
	public void operate() {
		super.operate();
		addFunctionA();
	}
	
	private void addFunctionA(){
		//要添加的新功能A
	}
}
/**
 * 
 * @author naivor
 *		裝飾模式-擴展功能B類
 */
class FunctionB extends Decorator{
	@Override
	public void operate() {
		super.operate();
		addFunctionB();
	}
	
	private void addFunctionB(){
		//要添加的新功能B
	}
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章