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类。

  • 相关阅读:
    Js五子棋游戏
    换肤
    jqzoom实战
    iphone开发笔记
    腾讯召实习生笔试题
    ajax( 汇率转化)
    20140805 17:24
    加载上一级目录下的图片文件并得到加载图片的大小
    精确碰撞检测 bitmapData.hitTest
    buttonMode 与mouseChildren【替换鼠标之后不响应鼠标事件】
  • 原文地址:https://www.cnblogs.com/buzhidaojiaoshenme/p/6726295.html
Copyright © 2011-2022 走看看