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

    装饰模式:

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

    装饰模式与职责链模式的差别:

    1,装饰模式,增加这些功能会被一一执行。

    2,职责链模式:并不是职责链中所有的职责代码都会执行。

    /// <summary>
    /// 手机抽象类,即装饰者模式中的抽象组件类
    /// </summary>
    public abstract class Phone
    {
    public abstract void Print();
    }

    /// <summary>
    /// 苹果手机,即装饰着模式中的具体组件类
    /// </summary>
    public class ApplePhone:Phone
    {
    /// <summary>
    /// 重写基类方法
    /// </summary>
    public override void Print()
    {
    Console.WriteLine("开始执行具体的对象——苹果手机");
    }
    }

    /// <summary>
    /// 装饰抽象类,要让装饰完全取代抽象组件,所以必须继承自Photo
    /// </summary>
    public abstract class Decorator:Phone
    {
    private Phone phone;

    public Decorator(Phone p)
    {
    this.phone = p;
    }

    public override void Print()
    {
    if (phone != null)
    {
    phone.Print();
    }
    }
    }

    /// <summary>
    /// 贴膜,即具体装饰者
    /// </summary>
    public class Sticker : Decorator
    {
    public Sticker(Phone p)
    : base(p)
    {
    }

    public override void Print()
    {
    base.Print();

    // 添加新的行为
    AddSticker();
    }

    /// <summary>
    /// 新的行为方法
    /// </summary>
    public void AddSticker()
    {
    Console.WriteLine("现在苹果手机有贴膜了");
    }
    }

    /// <summary>
    /// 手机挂件
    /// </summary>
    public class Accessories : Decorator
    {
    public Accessories(Phone p)
    : base(p)
    {
    }

    public override void Print()
    {
    base.Print();

    // 添加新的行为
    AddAccessories();
    }

    /// <summary>
    /// 新的行为方法
    /// </summary>
    public void AddAccessories()
    {
    Console.WriteLine("现在苹果手机有漂亮的挂件了");
    }
    }

    地址:http://www.cnblogs.com/zhili/p/DecoratorPattern.html

  • 相关阅读:
    return和exit以及C语言递归函数
    一个C语言外挂程序
    thinkphp查询构造器和链式操作、事务
    thinkphp一般数据库操作
    thinkphp上传图片
    thinkphp类型转换
    解决索引中碎片的问题
    SQL SERVER中非聚集索引的覆盖,连接,交叉,过滤
    兼容IE的CSS的”引入方式“
    CSS之display:block与display:inline-block
  • 原文地址:https://www.cnblogs.com/suzixuan/p/6980437.html
Copyright © 2011-2022 走看看