• 《大话设计模式》读书笔记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();
    	
    }



  • 相关阅读:
    linux定时器
    TIMESTAMP和DATETIME的区别
    Linux进程或线程绑定到CPU
    C++学习笔记
    磁盘扇区校验和
    docker安装mysql,并配置部分表同步
    docker 安装tomcat
    多tomcat 同一个浏览器 多个项目 会导致session覆盖
    Ubuntu 安装 NodeJS
    Ubuntu 下安装 Arduino IDE
  • 原文地址:https://www.cnblogs.com/muyangshaonian/p/9650561.html
Copyright © 2020-2023  润新知