装饰模式,先占位,由于文章太耗时,后面补上。
using System;
using System.Collections.Generic;
namespace SimpleFactory
{
class Program
{
static void Main(string[] args)
{
月饼 cake = new 月饼();
cake.制作();
cake.价格();
Console.WriteLine();
普通包装的月饼 commandPackaging = new 普通包装的月饼(cake);
commandPackaging.制作();
commandPackaging.价格();
Console.WriteLine();
精品包装的月饼 exquisitePackaging = new 精品包装的月饼(commandPackaging);
exquisitePackaging.制作();
exquisitePackaging.价格();
}
}
public interface 商品
{
void 制作();
void 价格();
}
public class 月饼 : 商品
{
public void 制作()
{
Console.WriteLine("制作出了一道原汁原味的月饼");
}
public void 价格()
{
Console.WriteLine("没有包装的月饼6.8元一个");
}
}
public class 月饼装饰 : 商品
{
private 商品 _goods;
public 商品 商品
{
get
{
return this._goods;
}
}
public 月饼装饰(商品 goods)
{
this._goods = goods;
}
public virtual void 制作()
{
this._goods.制作();
}
public virtual void 价格()
{
this._goods.价格();
}
}
public class 普通包装的月饼 : 月饼装饰
{
public 普通包装的月饼(商品 goods) : base(goods) { }
public override void 制作()
{
base.制作();
Console.WriteLine($"普通包装:给月饼打包");
}
public override void 价格()
{
Console.WriteLine("普通包装的月饼98元一个");
}
}
public class 精品包装的月饼 : 月饼装饰
{
public 精品包装的月饼(商品 goods) : base(goods) { }
public override void 制作()
{
base.制作();
Console.WriteLine($"精品包装:给月饼打包");
}
public override void 价格()
{
Console.WriteLine("精品包装的月饼268元一个");
}
}
}