实在觉得搜狗输入法流氓,于是就在刚刚卸载掉了。因为搜狗输入法“惯”出的懒散病也该得到治疗了。言归正传--“装饰者模式”
装饰者模式实际上就是将“父对象”的职责动态地加在“子对象”之上,“子对象”可以根据需要,在本有职责的基础上添加其他的业务。换句话说,若要拓展功能,装饰者设计模式比继承提供了更加富有弹性的解决方案。
它的设计原则一是尽可能多地使用组合,而尽可能少的使用继承,因为继承是在编译时决定的,是一种”静态“的功能拓展,而应用组合对功能进行拓展,则更富有灵活性。二是似的类对拓展开放而对修改关闭。
装饰者模式要求,装饰者与被装饰者需要有同一超类,其目的是为了让装饰者与被装饰者对象的类型能够匹配,而绝非是继承其行为。装饰者模式将保持接口,并增加对象的职责。
例子:
首先是定义一个接口,即装饰者与被装饰者都都需要继承的一个”超类“,是为了让装饰者与被装饰者对象的类型能够匹配。
interface Component
{
void Operation();
}
然后是被装饰者,充当”父对象“这个角色,定义了最基本的功能职责。
class Father : Component
{
public void Operation()
{
Console.WriteLine("Base operation.");
}
}
接下来