外观模式是一种结构型设计模式,其使用频率非常之高。为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口是的这一子系统更加的容易使用。
例:小王,小李,小张,如果自己做饭的话都需要有买菜,切菜,烧菜三个过程,十分繁琐,若他们去饭店吃饭,只需要点餐,然后直接就可以吃上热乎乎的饭菜了,饭店提供了下单这样的接口,将买菜,切菜,烧菜整合在一起,方便了大家。
namespace Designmode.Facade
{
/// <summary>
/// 购买食材的系统
/// </summary>
public class BuyfoodGroup
{
/// <summary>
/// 买食材
/// </summary>
public void Buyfood()
{
Console.WriteLine("buy food.");
}
}
}
namespace Designmode.Facade
{
/// <summary>
/// 切菜系统
/// </summary>
public class ChoppingGroup
{
/// <summary>
/// 切菜方法
/// </summary>
public void Chop()
{
Console.WriteLine("Chop");
}
}
}
namespace Designmode.Facade
{
/// <summary>
/// 烧菜系统
/// </summary>
public class CookingGroup
{
/// <summary>
/// 烧菜
/// </summary>
public void Cook()
{
Console.WriteLine("Cook");
}
}
}
namespace Designmode.Facade
{
/// <summary>
/// 饭店类,包含买菜,切菜,烧菜三个小组
/// </summary>
public class Restauratnt
{
/// <summary>
/// 购买食材小组
/// </summary>
private BuyfoodGroup _buyfoodGroup = null;
/// <summary>
/// 切菜小组
/// </summary>
private ChoppingGroup _choppingGroup = null;
/// <summary>
/// 烧菜组
/// </summary>
private CookingGroup _cookingGroup = null;
/// <summary>
/// 设置购买食材组
/// </summary>
/// <param name="buyfoodGroup"></param>
public void SetBuyfoodGroup(BuyfoodGroup buyfoodGroup)
{
this._buyfoodGroup = buyfoodGroup;
}
/// <summary>
/// 设置切菜组
/// </summary>
/// <param name="choppingGroup"></param>
public void SetChoppingGroup(ChoppingGroup choppingGroup)
{
this._choppingGroup = choppingGroup;
}
/// <summary>
/// 设置烧菜组
/// </summary>
/// <param name="cookingGroup"></param>
public void SetCookingGroup(CookingGroup cookingGroup)
{
this._cookingGroup = cookingGroup;
}
/// <summary>
/// 下单
/// </summary>
public void PlaceOrder()
{
this._buyfoodGroup.Buyfood();
this._choppingGroup.Chop();
this._cookingGroup.Cook();
}
}
}