乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      大話設計-裝飾模式

       怡紅公子0526 2021-07-22

      裝飾模式的核心:被裝飾對象(最原始),裝飾對象(帶有裝飾功能的被裝飾對象)。

      假設有一個被裝飾對象叫“ConcreteComponent ”,兩個裝飾對象叫“ConcreteDecoratorA”、“ConcreteDecoratorB”。裝飾是錦上添花的事情,ConcreteComponent 被裝飾之前已經(jīng)最好了最基本的工作,ConcreteDecoratorAConcreteDecoratorB只是在這個基本工作里額外加了些工作

      裝飾是無序的,可以ConcreteDecoratorA先裝飾ConcreteComponent,然后ConcreteDecoratorB裝飾ConcreteDecoratorA。也可以ConcreteDecoratorB先裝飾ConcreteComponent,然后ConcreteDecoratorA裝飾ConcreteDecoratorB

      被裝飾對象和裝飾類是否需要抽象跟這里的裝飾模式無關。

      using System;
      
      namespace ConsoleApp4
      {
          class Program
          {
              public static void Main(string[] args)
              {
                  ConcreteComponent concreteComponent = new ConcreteComponent();
                  ConcreteDecoratorA concreteDecoratorA = new ConcreteDecoratorA();
                  ConcreteDecoratorB concreteDecoratorB = new ConcreteDecoratorB();
      
                  concreteDecoratorA.SetComponent(concreteComponent);
                  concreteDecoratorB.SetComponent(concreteDecoratorA);
                  concreteDecoratorB.Operation();
              }
          }
          
          abstract class Component
          {
              public abstract void Operation();
          }
      
          class ConcreteComponent:Component
          {
              public override void Operation()
              {
                  Console.WriteLine("具體對象的操作");
              }
          }
      
           abstract class Decorator : Component
          {
              protected Component component;
              public void SetComponent(Component component)
              {
                  this.component = component;
              }
              public override void Operation()
              {
                  if (component != null)
                  {
                      component.Operation();
                  }
              }
          }
      
           class ConcreteDecoratorA : Decorator
          {
              private string addState;
              public override void Operation()
              {
                  base.Operation();
                  addState = "A addState";
                  Console.WriteLine("A類裝飾");
              }
          }
      
          class ConcreteDecoratorB : Decorator
          {
              private string addState;
              public override void Operation()
              {
                  base.Operation();
                  addState = "B addState";
                  Console.WriteLine("B類裝飾");
              }
          }
      }
      View Code
      using System;
      
      namespace ConsoleApp4
      {
          class Program
          {
              public static void Main(string[] args)
              {            
                  Person person = new Person("白石");
                  TShirts shirts = new TShirts();
                  Overalls overalls = new Overalls();
      
                  shirts.Decorate(person);
                  overalls.Decorate(shirts);
              }
          }
          
         class Person
          {
              public Person()
              {
      
              }
              private string name;
              public Person (string name)
              {
                  this.name = name;
              }
              public virtual void Show()
              {
                  // 什么裝飾都沒有的基本展示。
                  Console.WriteLine($"{name} 一個人的基本show");
              }
          }
      
          abstract class Finery : Person
          {
              protected Person component;
              public void Decorate(Person person)
              {
                  this.component = person;
              }
              public override void Show()
              {
                  if (component != null)
                  {
                      component.Show();
                  }
              }
          }
      
          class TShirts : Finery
          {
              public override void Show()
              {
                  base.Show();
                  Console.WriteLine("穿T恤");
              }
          }
      
          class Overalls : Finery
          {
              public override void Show()
              {
                  base.Show();
                  Console.WriteLine("工裝褲");
              }
          }
      }

        本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊一鍵舉報。
        轉藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多