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

    1. 简介

    装饰模式(Decorator),动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活。

    2. 程序示例

     1 class Program
     2     {
     3         static void Main(string[] args)
     4         {
     5             Person huoaa = new Person("霍啊啊");
     6 
     7             Sneakers pqx = new Sneakers();
     8             BigTrouser kk = new BigTrouser();
     9             TShirts dtx = new TShirts();
    10 
    11             pqx.Decorate(huoaa);
    12             kk.Decorate(pqx);
    13             dtx.Decorate(kk);
    14             dtx.Show();
    15         }
    16     }
    17 
    18     //Person类(ConcreteComponent)
    19     class Person
    20     {
    21         public Person()
    22         { }
    23 
    24         private string name;
    25 
    26         public Person(string name)
    27         {
    28             this.name = name;
    29         }
    30 
    31         public virtual void Show()
    32         {
    33             Console.WriteLine("装扮的{0}", name);
    34         }
    35     }
    36 
    37     //服饰类(Decorator)
    38     class Finery : Person
    39     {
    40         protected Person component;
    41 
    42         //打扮
    43         public void Decorate(Person component)
    44         {
    45             this.component = component;
    46         }
    47 
    48         public override void Show()
    49         {
    50             if (component != null)
    51             {
    52                 component.Show();
    53             }
    54         }
    55     }
    56 
    57     //具体服饰类(ConcreteDecorator)
    58 
    59     class TShirts : Finery
    60     {
    61         public override void Show()
    62         {
    63             Console.Write("大T恤 ");
    64             base.Show();
    65         }
    66     }
    67 
    68     class BigTrouser : Finery
    69     {
    70         public override void Show()
    71         {
    72             Console.Write("垮裤 ");
    73             base.Show();
    74         }
    75     }
    76 
    77     class Sneakers : Finery
    78     {
    79         public override void Show()
    80         {
    81             Console.Write("破球鞋 ");
    82             base.Show();
    83         }
    84     }
  • 相关阅读:
    leetcode204-统计质数个数之一步步调试超时
    SpringBoot-注解一句话
    算法-总结规律
    kafka-版本变更相关
    异步线程池如何做同步业务
    es-快捷DSL检索手记
    并发学习第七篇——ThreadPoolExecutor
    kafka-consumer端的设计细节
    kafka-producer使用总结
    kafka-topic重要配置分析
  • 原文地址:https://www.cnblogs.com/HuoAA/p/4060923.html
Copyright © 2011-2022 走看看