【设计模式之装饰模式】

前言:

装饰模式,属于二十三个设计模式中之一,那么,什么是装饰模式,下面,大家请跟着我一起走进装饰模式,来看看装饰模式:

核心:

(一)、结构图

想知道设计模式吗?那么看了它的UML图,你就一目了然了!

(二)基本代码

Component类
 abstract class Component
        {
            public abstract void Operation();
        }
ConcreteComponent类
 class ConcreteComponent:Component
    {
        public override void Operation()
        {
            Console.WriteLine("具体对象的操作");
        }
    }
Decorato类
abstract class Decorator : Component
    {
        protected Component component;
        public void SetComponent(Component component)
        {
            this.component = component;
        }
        public override void Operation()
        {
            if (component != null)
            {
                component.Operation();
            }
        }
    }
ConcreteDecoratorA类
 class ConcreteDecoratorA : Decorator 
            {
                private string addedState;
                public override void Operation()
                {
                    base .Operation();
                    addedState="New State";
                    Console.WriteLine("具体操作对象A的操作");
                }
            }
ConcreteDecoratorB类
 class ConcreteDecoratorB : Decorator
            {
                public override void Operation()
                {
                    base .Operation();
                    AddedBehavior();
                    Console .WriteLine ("具体操作对象B的操作");
                }
                public void AddedBehavior()
                {

                }
            }
客户端代码
 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();

        }

(三)注意


学习设计模式要善于变通,如果只有一个ConcreteComponent类而没有抽象的Component类,那么Decorator类可以是ConcreteComponent的一个子类,同样道理,如果只有一个ConcreteDecorator类,那么就没有必要建立一个单独的Decoratorl类,而可以把Decorato和ConcreteDecorator的责任合并成一个类。

eg.人靠衣服来打扮


(四)、定义

动态的给对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更加灵活。
我们可以通过记住穿衣服打扮自己的例子来理解这个装饰模式,装饰自己,就像添加一些额外的功能一样,这样有利于我们的记忆!

(五)、归类

隶属于创建型模式

(六)、优点

简化原有的类,将核心职责和装饰功能分开

总结:

装饰模式,更好的在代码中实现,加以体会。要 当心的是,装饰模式虽然不错,但是我们在用它的时候,要注意装饰的顺序。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值