外观模式主要是用来简化统一个很大的接口或者一群复杂的接口。
外观模式定义:提供了一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统很容易使用.(深入浅出设计模式)
外观模式不只是简化了接口,也将客户从组件的子系统中解耦。
外观模式实现代码:
//看电视类
public class WatchTv
{
string channel;
public WatchTv(string channel)
{
this.channel = channel;
}
public string TvOn()
{
return "Tv is on " + channel;
}
public string TvOff()
{
return "Tv is off " + channel;
}
}
//可以添加更多的类来通过外观模式包装在这里只举一个例子
//外观模式
public class WatchTvFacade
{
WatchTv watchTv;
//添加更多的对象
public WatchTvFacade(WatchTv tv)
{
this.watchTv = tv;
}
public string StartWatchTv()
{
return watchTv.TvOn();
}
public string EndWatchTv()
{
return watchTv.TvOff();
}
}
//外观模式的测试
public class FacadeTest
{
public static void Main()
{
WatchTv watchTv = new WatchTv("First Channel");
WatchTvFacade facade = new WatchTvFacade(watchTv);
Console.WriteLine(facade.StartWatchTv());
Console.WriteLine("the Tv is end");
Console.WriteLine(facade.EndWatchTv());
}
}
外观模式与适配器模式以及装饰者之间的区别
1.外观和适配器都可以包装许多类,但是外观的目的是简化接口,而适配器的目的是将接口转换成不同接口
2.当需要使用一个现有的类而其接口不符合你的需求时就是用适配器。
3.当需要简化并统一一个很大的接口或者一群复杂的接口时使用外观。
4.实现一个外观,需要将子系统组合进外观众,然后将工作委托给子系统执行。
5.实现一个适配器可能需要一番功夫,也可能不费功夫,是目标接口大小与复杂度来定
6.你可以为一个子系统实现一个以上的外观。
7.适配器将一个对象包装起来以改变其接口;装饰者将一个对象包装起来以后增加新的行为和责任;而外观将一群“包装”起来以简化其接口