外观模式定义:隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性。
主要意图:为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
主要解决:降低访问复杂系统的内部子系统时的复杂度,简化客户端与之的接口。
解决方案:客户端不与系统耦合,外观类与系统耦合。
主要应用:
1,设计初期阶段,应该有意识的将不同层分离,层与层之间建立外观模式。
2,开发阶段,子系统越来越复杂,增加外观模式提供一个简单的调用接口。
3, 维护一个大型遗留系统的时候,可能这个系统已经非常难以维护和扩展,但又包含非常重要的功能,为其开发一个外观类,以便新系统与其交互。
优点:
1、减少系统相互依赖。
2、提高灵活性。
3、提高了安全性。
缺点:
不符合开闭原则,如果要改东西很麻烦,继承重写都不合适。
外观模式类图:
代码实现:
using System;
namespace _03外观模式_示例代码
{
class Program
{
static void Main(string[] args)
{
Facade facade = new Facade();
facade.MethodA();
facade.MethodB();
Console.Read();
}
}
/// <summary>
/// 子系统一
/// </summary>
class SubSystemOne
{
public void MethodOne()
{
Console.WriteLine(" 子系统方法一");
}
}
/// <summary>
/// 子系统二
/// </summary>
class SubSystemTwo
{
public void MethodTwo()
{
Console.WriteLine(" 子系统方法二");
}
}
/// <summary>
/// 子系统三
/// </summary>
class SubSystemThree
{
public void MethodThreee()
{
Console.WriteLine(" 子系统方法三");
}
}
/// <summary>
/// 子系统四
/// </summary>
class SubSystemFour
{
public void MethodFour()
{
Console.WriteLine(" 子系统方法四");
}
}
/// <summary>
/// 外观类
/// </summary>
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();
four.MethodFour();
}
public void MethodB()
{
Console.WriteLine("\n方法组B()----");
two.MethodTwo();
three.MethodThreee();
}
}
}
C#的定义,声明,创建变量的区别:https://zhidao.baidu.com/question/876882503033761852.html