靠着坚强的意志力,开始写第二篇笔记。
今天讲到装饰模式,书里提到跟建造者模式挺像的,但建造者适用于稳定的构造方式,而装饰模式则能够方便地动态增加功能。唔,建造者也忘得差不多了,基于一个良好的对比效果,明天就决定是你啦。
第二天,哈吉马路哟。
装饰模式
先说说我的理解,装饰模式最重要的就是装饰和主题都继承同一个类,或者装饰直接继承了主题,因此才有能装饰上去。
先给出个大致的结构图,我来操作一下具体代码
abstract class Component
{
public abstract void Operation();
}
//具体对象,也就是被装饰的主体
class ConcreteComponent : 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 ConcreteDecoratorA : Decorator
{
private string addState;
public override void Operation()
{
base.Operation();
//new Operation
addState="New State";
Console.WriteLine("具体装饰对象A的操作");
}
}
class ConcreteDecoratorB : Decorator
{
public override void Operation()
{
base.Operation();
//new Operation
AddBehavior();
}
private void AddBehavior()
{
}
}
//客户端如下(java)
// 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();
// }
书里举到的具体例子是小菜扮靓,到时候想设计模式就全靠这些例子了。
跟之前的同样没什么变化,直接套用模式即可。
声明:
本文采用
BY-NC-SA
协议进行授权,如无注明均为原创,转载请注明转自
ConneRの博客
本文地址: 大话设计模式笔记(2)—-装饰模式
本文地址: 大话设计模式笔记(2)—-装饰模式
您必须 登录 才能发表评论