其他几个灯具代码都一样的我就不贴出来了。
调用代码:
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
红色灯泡 reddengpao = new 红色灯泡();
矩形灯具 juxingdengju = new 矩形灯具();
多边形灯具 duobianxingdengju = new 多边形灯具();
duobianxingdengju.添加装饰的灯泡(reddengpao);
juxingdengju.添加装饰的灯泡(duobianxingdengju);
Console.WriteLine(juxingdengju.打开灯());
Console.ReadLine();
}
}
} |
装饰者模式就讲的差不多了。这里面用到了接口、继承、多态等特性,其实接口就是用来消除类之间的耦合,继承是为了拿对象的行为,多态是为了将职责动态的添加到灯具中去。模式中的一些特性是会随着环境的不同而不同,有些时候根本不需要接口,但是为了进行多类型之间的扩展就必须进行接口编程。
总结:我个人觉得装饰者模式用的场合不是很多,继承就是为了拿对象的行为,然后在单独引用一个对象的实例,这样就等于浪费了一个对象的内存。简单的装饰者可以不用继承,如果需要统一调用的话就需要继承了,接口只是用来表示装饰者不仅仅可以装饰某一个对象,而是某一类对象。根据需要的不同模式可以适当的进行修改,以适应当前环境。
相关链接:
浅谈.NET策略模式