代码改变世界

设计模式之外观模式(Facade)

2010-01-18 20:49  key_sky  阅读(245)  评论(0编辑  收藏  举报

外观模式(Facade):为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。外观模式要求一个子系统的外部与其内部的通信必须通过一个统一的外观对象进行。

使用条件:1.为一个复杂子系统提供一个简单接口
2.提高字系统的独立性
3.在层次化结构中可以使用Facade模式定义系统中每一层的入口
4.提供设计粗糙或高度复杂的遗留代码的比较清晰的简单的接口,让新系统与外观对象交互,Facade与遗留代码交互所有复杂的工作。

Facade1.cs

代码
using System;
using System.Collections.Generic;
using System.Text;

//外观模式(Facade):为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口
//,这个接口使得这一子系统更加容易使用。外观模式要求一个子系统的外部与其内部的通信必
//须通过一个统一的外观对象进行。

//使用条件:1.为一个复杂子系统提供一个简单接口
//2.提高字系统的独立性
//3.在层次化结构中可以使用Facade模式定义系统中每一层的入口
//4.提供设计粗糙或高度复杂的遗留代码的比较清晰的简单的接口,让新系统与外观对象交互,
//Facade与遗留代码交互所有复杂的工作。
namespace Facade
{
class Facade1
{
}

//子系统类
class SubSystemOne
{
public void MethodOne()
{
Console.WriteLine(
"子系统方法一");
}
}

class SubSystemTwo
{
public void MethodTwo()
{
Console.WriteLine(
"子系统方法二");
}
}

class SubSystemThree
{
public void MethodThree()
{
Console.WriteLine(
"子系统方法三");
}
}

class SubSystemFour
{
public void MethodFour()
{
Console.WriteLine(
"子系统方法四");
}
}

//外观类
class Facade
{
SubSystemOne one;
SubSystemTwo two;
SubSystemThree three;
SubSystemFour four;

public Facade()
{
one
= new SubSystemOne();
two
= new SubSystemTwo();
three
= new SubSystemThree();
four
= new SubSystemFour();
}

public void MethodA()
{
Console.WriteLine(
"\n方法组A()----");
one.MethodOne();
two.MethodTwo();
three.MethodThree();
four.MethodFour();
}

public void MethodB()
{
Console.WriteLine(
"\n方法组B()----");
two.MethodTwo();
three.MethodThree();
}
}
}

Program.cs:

代码
using System;
using System.Collections.Generic;
using System.Text;

namespace Facade
{
class Program
{
static void Main(string[] args)
{
Facade facade
= new Facade();

facade.MethodA();
facade.MethodB();

Console.Read();
}
}
}

 

运行结果:

方法组A()----

子系统方法一

子系统方法二

子系统方法三

子系统方法四

 

方法组B()----

子系统方法二

子系统方法三