zoukankan      html  css  js  c++  java
  • 《大话设计模式》读书笔记4 装饰模式

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

    装饰模式结构图:


    装饰模式实现代码:

    abstract class Component
    {
    	public abstract void Operation();
    }
    
    class ConcretComponent:Component
    {
    	public override void Operation()
    	{
    		Console.WriteLine("具体对象的操作");
    		
    	}
    }
    
    abstract class Decorator:Component
    {
    	protected Component component;
    	
    	public void SetComponent(Component component)
    	{
    		this.component=component;
    	}
    	public override void Operation()
    	{
    		if(component!=null)
    		{
    			component.Operation();
    		}
    	}
    }
    
    class ConcretDecoratorA:Decorator
    {
    	private string addedState;
    	
    	public override void Operation()
    	{
    		base.Operation();
    		addedState="New State";
    		Console.WriteLine("具体装饰对象A的操作");
    	}
    }
    
    class ConcretDecoratorB:Decorator
    {
    	public override void Operation()
    	{
    		base.Operation();
    		AddedBehaviour();
    		Console.WriteLine("具体装饰对象B的操作");
    	}
    	
    	private void AddedBehaviour()
    	{
    		
    	}
    }
    
    static void Main(string[] args)
    {
    	ConcretComponent c=new ConcretComponent();
    	ConcretDecoratorA d1=new ConcretDecoratorA();
    	ConcretDecoratorB d2=new ConcretDecoratorB();
    	
    	d1.SetComponent(c);
    	d2.SetComponent(d1);
    	d2.Operation();
    	
    	Console.Read();
    	
    }



  • 相关阅读:
    用html5标记一段文章模块
    自定义事件
    html5表单
    对canvas封装的js库
    canvas
    第五周进度总结
    第七周进度总结
    大道至简阅读笔记
    第六周进度总结
    第三周进度总结
  • 原文地址:https://www.cnblogs.com/muyangshaonian/p/9650561.html
Copyright © 2011-2022 走看看