zoukankan      html  css  js  c++  java
  • (C#)设计模式之装饰模式

    1.装饰模式
      动态的给一个对象添加一些额外的职责,就添加功能来说,装饰模式比生成子类更加灵活。
    *装饰模式是为已有功能动态添加更多功能的一种方式。
    *装饰模式将原有类中的核心职责与装饰功能分离。简化了原有的类即去除类重复的装饰逻辑。
    *装饰模式将每个装饰功能放在单独的类中并让这个类装饰它所要装饰的对象。


    namespace 设计模式 { class Program { static void Main(string[] args) { Person 刘德华 = new Person("刘德华"); Console.WriteLine("开始装扮"); Tshirt tshirt = new Tshirt(); Jonson jonson = new Jonson(); Shose shose = new Shose();
    //层层包装,不断向原有的类中添加新的装饰物 tshirt.Decrator(刘德华); jonson.Decrator(tshirt); shose.Decrator(jonson); shose.Show(); } } /// <summary> /// 具体的需要被装饰的类,也是需要丰富功能的类 /// </summary> class Person { public Person() { } private string name; public Person(string name) { this.name = name; } public virtual void Show() { Console.WriteLine("装扮的{0}", name); } } /// <summary> /// 服饰类 /// </summary> class Finery:Person { protected Person component; //装饰的方法 public void Decrator(Person component) { this.component = component; } public override void Show() { if (component!=null) { component.Show(); } } } /// <summary> /// 具体的服饰类 /// </summary> class Tshirt:Finery { public override void Show() { Console.WriteLine("T恤"); base.Show(); } } class Jonson : Finery { public override void Show() { Console.WriteLine("牛仔裤"); base.Show(); } } class Shose : Finery { public override void Show() { Console.WriteLine("牛皮鞋"); base.Show(); } } }

    *先将各个功能层层加载在一起,然后由最上层的实例调用内部功能并依据基类base的方法将功能层层展开。

      

    点赞鼓励下,(づ ̄3 ̄)づ╭❤~

    作者:君莫笑
           出处:https://www.cnblogs.com/Firepad-magic/
           Unity最受欢迎插件推荐:点击查看
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    C# 多线程编程及其几种方式
    多态有几种表现形式
    闭包的理解
    C# 泛型类型约束 where
    HTML扩展--HTMLTestRuner HTML测试报告
    编写web自动化测试
    unittest单元测试框架之认识unittest
    自动化测试模型
    处理HTML5视频播放、滑动解锁
    操作Cookie调用JavaScript
  • 原文地址:https://www.cnblogs.com/Firepad-magic/p/4701448.html
Copyright © 2011-2022 走看看