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的方法将功能层层展开。

  

转载于:https://www.cnblogs.com/Firepad-magic/p/4701448.html

(C#)设计模式之装饰模式相关推荐

  1. 设计模式之装饰模式20170726

    结构型设计模式之装饰模式: 一.含义 动态地给一个对象添加一些额外的职责.就增加功能来说,装饰模式相比生成子类更为灵活. 通俗来讲,装饰模式是对类的功能进行加强或减弱. 二.代码说明 1.主要有两个角 ...

  2. java设计模式之装饰模式_Java中的装饰器设计模式

    java设计模式之装饰模式 装饰器设计模式允许在运行时将附加职责或行为动态附加到对象. 它是一种结构模式,利用聚合来组合这些行为. 在本教程中,我们将学习实现装饰器模式. UML图: 让我们从装饰器模 ...

  3. 大话设计模式之装饰模式(python实现)

    大话设计模式之装饰模式 使用场景 定义 装饰模式结构图 python实现装饰模式 代码结构图 优点 使用场景 建造过程不稳定,不确定.把所需的功能按照正确的顺序串联起来进行控制. 新加入的东西仅仅是为 ...

  4. 设计模式之装饰模式详解(附应用举例实现)

    文章目录 1 装饰模式介绍 2 装饰模式详解 2.1 装饰模式结构 2.2 装饰模式实现 2.3 装饰模式应用举例 3 透明装饰模式和半透明装饰模式 1 装饰模式介绍 在生活中,我们往往会给图片增加一 ...

  5. 设计模式之 装饰模式

    设计模式之 装饰模式 概述: 装饰模式(Decorator Pattern) 又叫装饰者模式:装饰模式指的是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能.它是通过创建一个包装对象,也 ...

  6. 设计模式之装饰模式(Decorator)摘录

    23种GOF设计模式一般分为三大类:创建型模式.结构型模式.行为模式. 创建型模式抽象了实例化过程,它们帮助一个系统独立于如何创建.组合和表示它的那些对象.一个类创建型模式使用继承改变被实例化的类,而 ...

  7. 设计模式之三 装饰模式

    1.场景模拟 这样让想起了老李,我跟老李是很要好的哥们,当然他不像我还是光棍,所以他不光有友情还有爱情了,不过,就在最近几天他们吵架啦,什么原因?就不多说啦,总之身为男人的老李还是决定主动认错挽回女方 ...

  8. 大话设计模式之装饰模式

    装饰模式 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构.这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装. 通过下列代码加深下理解 ...

  9. JAVA设计模式之装饰模式

    在阎宏博士的<JAVA与模式>一书中开头是这样描述装饰(Decorator)模式的: 装饰模式又名包装(Wrapper)模式.装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替 ...

最新文章

  1. 云服务时代,你是否没穿内裤在到处逛啊!
  2. 【NOIP模拟赛】藏宝图 最小生成树
  3. Selenium for C#的入门Demo
  4. html中after伪类原理,css :after伪类+content使用说明和方法
  5. 微信公众账号开发文档
  6. 《复杂》读书笔记(part1)--一些思想是由简单的思想组合而成,我称此为复杂
  7. ajax post form上传图片,ajax怎样提交form表单与实现文件上传
  8. 用MySQl创建供应商标_建立一个供应商、零件数据库。其中供应商表S(Sno,Sname,Zip - 问答库...
  9. go语言中输入的方式,获取用户的输入信息
  10. Delphi循环语句 -For
  11. node.js框架 express
  12. Cadence Allegro 差分走线单根走的方法图文教程
  13. 服务端使用GZIP压缩数据
  14. 培养出儿子清华女儿北大的家庭十条家规
  15. 计算机二级MS-Office真题及答案-历年汇总
  16. 加索引如何避免锁表?
  17. 白竹机器人_白术防风黄芪功效作用
  18. Acwing - 算法基础课 - 笔记(图论 · 三)
  19. 苹果付费app共享公众号_【苹果付费APP共享】 Affinity Photo
  20. 密码打马赛克已经不安全了!这款开源的去“马赛克”工具一秒还原

热门文章

  1. 2019年陕西高考分数线出炉
  2. 2019年安徽高考最高分出炉:文科681分 理科710分
  3. 创建数据库是列名无效咋办_怎样解决列名无效 - 技术问答 - .Net源码论坛 .net源码,ASP.net|论坛 - Powered by Discuz!NT...
  4. springboot 启动类注解 @SpringBootApplication 和 @ComponentScan 的问题
  5. 091_类数组对象转为数组
  6. 用户界面改变图片锚点
  7. java layout_java - 以编程方式在LinearLayout中设置边距
  8. 阿德莱德计算机专业排名,阿德莱德大学专业排名第几?2019年榜单揭晓!
  9. mysql delete删除列,在MySQL中删除我的Key列 (Delete my Key column in MySQL)
  10. Java实现双向链表