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

    不用通过生成子类的方式给对象动态的添加额外的职责。

    为已有功能动态地添加更多功能的一种方法。装饰了原有类的核心职责或主要行为。

    这种模式可以有效地把类的核心职责和装饰功能区分开。

    比如我要给一个Person类添加额外的职责

    //定义一个person类

    public class Person
    {
    public Person()
    { }
    private string name;
    public Person(string name)
    {
    this.name = name;
    }
    public virtual void Show()
    {
    Console.WriteLine("装扮的{0}",name);
    }
    }

    //装饰基类,继承于person类,设置要装饰的对象

    class Finery:Person
    {
    Person component;
    public void Decorate(Person component)
    {
    this.component = component;//传入设置要装饰的对象
    }
    public override void Show()
    {
    if(component!=null)
    {
    component.Show();
    }
    }

    }

    //实现装饰基类

    class Sneakers:Finery
    {
    public override void Show()
    {
    base.Show();
    Console.WriteLine("sneakers");
    }
    }

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

    //调用

    Person xc = new Person("jech");
    Console.WriteLine("第一种");

    Sneakers sneaker = new Sneakers();
    TShirts tshirt = new TShirts();

    sneaker.Decorate(xc);//设置要装饰的对象
    tshirt.Decorate(sneaker);
    tshirt.Show();

    //如果还有要添加的职责,可以继续实现Finery类。

  • 相关阅读:
    Java线程的学习(一)——以售票系统为例
    web笔记
    ssm2之applicationContext.xml文件配置
    ssm笔记1
    在ViewHolder中添加item点击事件接口(自定义
    Java反射机制
    新手导航页(小圆点
    jsoup
    TextView设置随机大小和颜色
    常用IO流
  • 原文地址:https://www.cnblogs.com/buzhidaojiaoshenme/p/6726295.html
Copyright © 2011-2022 走看看