zoukankan      html  css  js  c++  java
  • 3.装饰模式

    概述:装饰模式是在不必改变原文件和使用继承的情况下,动态的扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。

    特点:

    1)装饰对象和真实对象有相同的接口。这样客户端对象就可以和真实对象相同的方式和装饰对象交互。

    2)装饰对象包含一个真实对象的索引。

    3)装饰对象接受搜有的来自客户端的请求。它把这些请求钻发给真实的对象。

    4)装饰对象可以在转发这些请求以前或者以后增加一些附加功能。这样就确保了在运行时,不能修改给定的对象的结构就可以在外部增加附加的功能。在面向对象的设计中,通常是通过继承来实现对给定类的功能拓展。

        public abstract class Component
        {
            public abstract void Operation();
        }
    
        public class ConcreteCompinent : Component
        {
    
            public override void Operation()
            {
                //具体对象的操作
            }
        }
    
        public abstract class Decorator : Component
        {
            protected Component component;
            //设置component
            public void SetCom(Component com)
            {
                this.component = com;
            }
            //重写方法,实现执行的是Component的operation()
            public override void Operation()
            {
                if (component!=null)
                {
                    component.Operation();
                }
            }
        }
    
    
        public class ConcreteDecoratorA : Decorator
        {
            //本类的独有功能区别于ConcreteDecoratorB
            private string addedState;
            public override void Operation()
            {
                //首先运行原Component的OPeration(),再执行本类的功能,如addedState,相当于对原Component进行了装饰
                base.Operation();
                addedState = "New State";
                //具体修饰对象A的操作
                //……
            }
    
        }
    
        public class ConcreteDecoratorB : Decorator
        {
            public override void Operation()
            {
                //首先运行原Component的OPeration(),再执行本类的功能,如AddedBehacior(),相当于对原Component进行了装饰
                base.Operation();
                AddedBehacior();
                //具体装饰对象B的操作
            }
    
            private void AddedBehacior()
            {
                throw new NotImplementedException();
            }
        }
  • 相关阅读:
    嵌入式培训学习历程第二十四天
    嵌入式培训学习历程第二十三天
    嵌入式培训学习历程第二十二天
    嵌入式培训学习历程第二十一天
    嵌入式培训学习历程第二十天
    嵌入式培训学习历程第十九天
    嵌入式培训学习历程第十八天
    嵌入式培训学习历程第十七天
    嵌入式培训学习历程第十六天
    系统编程之进程的创建.僵尸与孤儿进程
  • 原文地址:https://www.cnblogs.com/xyangs/p/2579529.html
Copyright © 2011-2022 走看看