还有就是为什么我们没有用接口,我们来延伸出接口的使用。假如一个灯具可以装饰很多种灯泡,那么必然就需要一个统一的接口来约束这些必备条件。 比如灯具只能装饰多大的灯泡、什么型号的灯泡等等;
上面的几个问题,我就大概的描述了一下。下面我们来对代码进行一些修改,让它看起来像“装饰者模式”。
更改后的灯泡代码:
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication1
{
public interface 灯泡系列
{
int 灯泡型号 { get; }
string 打开灯();
}
public abstract class 灯泡 : 灯泡系列
{
public int 灯泡型号
{
get { return 10; }
}
public virtual string 打开灯()
{
return "灯泡已经点亮";
}
}
public class 红色灯泡 : 灯泡
{
public int 灯泡型号
{
get { return 10; }
}
public override string 打开灯()
{
return "红色灯泡";
}
}
} |
更改后的矩形灯具代码:
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication1
{
public class 矩形灯具 : 灯泡
{
private 灯泡系列 dengpaoobject;
public void 添加装饰的灯泡(灯泡 d)
{
dengpaoobject = d;
}
public override string 打开灯()
{
return dengpaoobject.打开灯() + ",外加矩形灯具效果";
}
}
} |