外观模式(facade) 之c#
外观模式(Facade Pattern)可以将一系列复杂的类包装成一个简单的封闭接口。也称门面模式.
Facade模式的意图是:为了子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用
先上图
可以看的出来,我们客户端调用子系统方法,并不是直接调用,而是中间有个高层次的统一接口Entity
client调用只是跟Entity这个类打交道,别的don't care
class Client
{
//门面/外观模式 facade[fə'sɑ:d] 之C#
/* 应用场景
* 为子系统中的接口提供一个一致的调用方法,一般在项目的前期不用,后期解耦时候考虑用
* 开发阶段,会产生很多小的类,为了减少类之间的耦合,可以用facade模式定义一个统一的接口
* 在对老系统进行维护和升级的时候,可能要调用以前的方法,同时不对这些方法进行修改,可以考虑定义一个更高层次的接口,调用遗留的老方法, 新系统不直接调用原来的方法,而是通过访问这个更高层次的接口调用以前的方法 */
static void Main(string[] args)
{
Entity entity = new Entity();
entity.Activity();
entity.Rest();
Console.Read();
}
}
//吃喝
class Eat
{
public void Action()
{
Console.WriteLine("Eat ");
}
}
//玩乐
class Play
{
public void Action()
{
Console.WriteLine("Play");
}
}
//休息,睡觉
class Sleep
{
public void Rest()
{
Console.WriteLine("Sleep");
}
}
class Entity
{
Eat eat;
Play play;
Sleep sleep;
public Entity()//构造函数
{
eat = new Eat();
play = new Play();
sleep = new Sleep();
}
public void Activity()//吃喝玩乐
{
eat.Action();
play.Action();
}
public void Rest()//休息
{
sleep.Rest();
}
}
Abstract Factory模式可以与Facade模式一起使用以提供一个接口,这一接口可用来以一种子系统独立的方式创建子系统对象。Abatract Factory模式也可以代替Facade模式隐藏那些与平台相关的类
Abstract Factory模式可以与Facade模式一起使用以提供一个接口,这一接口可用来以一种子系统独立的方式创建子系统对象。Abatract Factory模式也可以代替Facade模式隐藏那些与平台相关的类
Mediator模式与Facade模式的相似之处是,它抽象了一些已有的类的功能