一、装饰模式
小菜想要和MM约会需要给自己扮靓,而新入住房子之前也需要对每个房间装修一遍,这些事情都有一个共同的特点,就是一个词“装饰”,我们可以把装饰模式应用在这些事情上面。
装饰模式:就是动态的给一个对象添加一些额外的职责或者是功能,装饰模式比生成子类更为灵活。是给已有功能动态的添加更多功能的一种方式。举一个装修房子的例子来说明一下什么是装饰模式.
//装饰模式
//父类,所有房子的抽象类
abstract class Building
{
public abstract void Spruce();
}
//要装饰的具体房子类,具体的对象,可以给这个对象添加一些职责
class Room : Building
{
//房间编号
private string name;
public Room(string name)
{
this.name = name;
}
//对具体房间的装修
public override void Spruce()
{
Console.WriteLine("房间{0}装修的设备有", name);
}
}
//装饰物品,也属于房子,所以可以抽象成是房子的子类,同时也作为具体装饰物品的父类
abstract class Decorator : Building
{
protected Building