外观模式(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模式的相似之处是,它抽象了一些已有的类的功能

posted @ 2011-08-15 12:48  艾伦  阅读(1978)  评论(2编辑  收藏  举报