设计模式 - 装饰模式

  • 装饰模式是为已有功能动态的添加更多功能的一种方式。
  • 当系统需要新功能的时候,是向旧的类中添加新的代码,这些代码通常装饰了原有类的核心职责或者主要行为。
  • 装饰模式的有点,把类中的装饰功能从类中搬移去除,这样可以简化原有的类。
  • 有效的把类的核心职责和装饰功能区分开了,而且可以去除相关类中重复的装饰逻辑。
  • 举例
using System;
namespace Factory1
{
    //人
    class Person{
        public Person(){}
        private string name;
        public Person(string name)
        {
            this.name = name;
        }
        public virtual void Show()
        {
            Console.WriteLine ("\nresult = {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 ();
            }
        }
    }
    //装饰 人 + Tshirt
    class TShirts:Finery{
        public override void Show()
        {
            Console.Write ("T-Shirt");
            base.Show ();
        }
    }
    //装饰 人 + BigTrouser
    class BigTrouser:Finery{
        public override void Show(){
            Console.Write("BigTrouser");
            base.Show ();
        }
    }
    class MainClass
    {
        public static void Main (string[] args)
        {
            Person sc = new Person ("little");
            Console.WriteLine ("the First category");
            TShirts ts = new TShirts ();
            BigTrouser bt = new BigTrouser ();
            ts.Decorate (sc);
            bt.Decorate (ts);
            bt.Show ();
            Console.Read ();
        }
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 需求 写一个给人模拟搭配不同服饰的程序,可以给人换各种各样的衣服裤子的形象。 初步实现 需求比较简单,直接上代码:...
    Mr丶sorrow阅读 4,090评论 0 2
  • 模式动机 一般有两种方式可以实现给一个类或对象增加行为: 继承机制,使用继承机制是给现有类添加功能的一种有效途径,...
    lever_xu阅读 1,930评论 0 0
  • 一层继承一层。装饰模式是为已有功能动态地添加更多功能的一种方式。关键词是添加更多功能。 当系统需要新功能时,是向旧...
    愿成有心人阅读 1,794评论 0 0
  • 设计模式———装饰模式 例子:成绩单报告 在面向对象的设计中,如果超过两层继承,可能就出设计问题了。这是经验总结,...
    书笔年华阅读 3,068评论 0 0
  • 原文地址:LoveDev 装饰模式(Decorator Pattern):也可以称为包装模式(Wrapper Pa...
    KevinLive阅读 3,780评论 1 2