• 装饰者模式


    using System;
    using System.Collections.Generic;
    using System.Text;

    //装饰者模式
    namespace designMode
    {
    class Person
    {
    public Person()
    {

    }

    private string name;
    public Person(string name)
    {
    this.name = name;
    }

    public virtual void Show()
    {
    Console.WriteLine(
    "装扮的{0}", name);
    }
    }

    class Finery : Person
    {
    protected Person component;

    //打扮
    public void Decorate(Person component)
    {
    this.component = component;
    }

    public override void Show()
    {
    if (component != null)
    {
    component.Show();
    }
    }
    }

    class TShirts : Finery
    {
    public override void Show()
    {
    {
    Console.WriteLine(
    "大T恤");
    base.Show();
    }
    }
    }

    class BigTrouser : Finery
    {
    public override void Show()
    {
    {
    Console.WriteLine(
    "垮裤");
    base.Show();
    }
    }
    }

    class WearSneakers : Finery
    {
    public override void Show()
    {
    {
    Console.WriteLine(
    "破球鞋");
    base.Show();
    }
    }
    }

    class WearSuit : Finery
    {
    public override void Show()
    {
    {
    Console.WriteLine(
    "西装");
    base.Show();
    }
    }
    }

    class WearTie : Finery
    {
    public override void Show()
    {
    {
    Console.WriteLine(
    "领带");
    base.Show();
    }
    }
    }

    class WearLeatherShoes : Finery
    {
    public override void Show()
    {
    {
    Console.WriteLine(
    "破球鞋");
    base.Show();
    }
    }
    }

    }

      

    using System;
    using System.Collections.Generic;
    using System.Text;

    namespace designMode
    {
    class Program
    {
    static void Main(string[] args)
    {

    //装饰者模式
    Person xc = new Person("小菜");
    Console.WriteLine(
    "\n第一张装扮:");

    WearSneakers pqx
    = new WearSneakers();
    BigTrouser kk
    = new BigTrouser();
    TShirts dtx
    = new TShirts();

    pqx.Decorate(xc);
    kk.Decorate(pqx);
    dtx.Decorate(kk);
    dtx.Show();

    Console.WriteLine(
    "\n第二种装扮:");

    WearLeatherShoes px
    = new WearLeatherShoes();
    WearTie ld
    = new WearTie();
    WearSuit xz
    = new WearSuit();

    px.Decorate(xc);
    ld.Decorate(px);
    xz.Decorate(ld);
    xz.Show();

    Console.Read();
    }
    }
    }

      

  • 相关阅读:
    HDU
    01字典树模板
    扩展欧几里得和乘法逆元
    HDOJ-1156 Brownie Points II 线段树/树状数组(模板)
    CF-825E Minimal Labels 反向拓扑排序
    CF-831D Office Keys 思维题
    RMQ 解决区间查询问题
    hdu 5073 有坑+方差贪心
    hdu 5074 相邻数和最大dp
    hdu 5078 水题
  • 原文地址:https://www.cnblogs.com/cjingzm/p/2124395.html
Copyright © 2020-2023  润新知