设计模式--12.外观模式
2017-02-08 15:36
183 查看
外观模式:为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
![](http://img.my.csdn.net/uploads/201212/04/1354636733_5965.jpg)
外观模式中所指的子系统是一个广义的概念,它可以是一个类、一个功能模块、系统的一个组成部分或者一个完整的系统。子系统类通常是一些业务类,实现了一些具体的、独立的业务功能,其典型代码如下:
[csharp] view
plain copy
class SubSystemA
{
public void MethodA()
{
//业务实现代码
}
}
class SubSystemB
{
public void MethodB()
{
//业务实现代码
}
}
class SubSystemC
{
public void MethodC()
{
//业务实现代码
}
}
在引入外观类之后,与子系统业务类之间的交互统一由外观类来完成,在外观类中通常存在如下代码:
[csharp] view
plain copy
class Facade
{
private SubSystemA obj1 = new SubSystemA();
private SubSystemB obj2 = new SubSystemB();
private SubSystemC obj3 = new SubSystemC();
public void Method()
{
obj1.MethodA();
obj2.MethodB();
obj3.MethodC();
}
}
由于在外观类中维持了对子系统对象的引用,客户端可以通过外观类来间接调用子系统对象的业务方法,而无须与子系统对象直接交互。引入外观类后,客户端代码变得非常简单,典型代码如下:
[csharp] view
plain copy
class Program
{
static void Main(string[] args)
{
Facade facade = new Facade();
facade.Method();
}
}
![](http://img.my.csdn.net/uploads/201212/04/1354636733_5965.jpg)
模式实现
外观模式的主要目的在于降低系统的复杂程度,在面向对象软件系统中,类与类之间的关系越多,不能表示系统设计得越好,反而表示系统中类之间的耦合度太大,这样的系统在维护和修改时都缺乏灵活性,因为一个类的改动会导致多个类发生变化,而外观模式的引入在很大程度上降低了类与类之间的耦合关系。引入外观模式之后,增加新的子系统或者移除子系统都非常方便,客户类无须进行修改(或者极少的修改),只需要在外观类中增加或移除对子系统的引用即可。从这一点来说,外观模式在一定程度上并不符合开闭原则,增加新的子系统需要对原有系统进行一定的修改,虽然这个修改工作量不大。外观模式中所指的子系统是一个广义的概念,它可以是一个类、一个功能模块、系统的一个组成部分或者一个完整的系统。子系统类通常是一些业务类,实现了一些具体的、独立的业务功能,其典型代码如下:
[csharp] view
plain copy
class SubSystemA
{
public void MethodA()
{
//业务实现代码
}
}
class SubSystemB
{
public void MethodB()
{
//业务实现代码
}
}
class SubSystemC
{
public void MethodC()
{
//业务实现代码
}
}
在引入外观类之后,与子系统业务类之间的交互统一由外观类来完成,在外观类中通常存在如下代码:
[csharp] view
plain copy
class Facade
{
private SubSystemA obj1 = new SubSystemA();
private SubSystemB obj2 = new SubSystemB();
private SubSystemC obj3 = new SubSystemC();
public void Method()
{
obj1.MethodA();
obj2.MethodB();
obj3.MethodC();
}
}
由于在外观类中维持了对子系统对象的引用,客户端可以通过外观类来间接调用子系统对象的业务方法,而无须与子系统对象直接交互。引入外观类后,客户端代码变得非常简单,典型代码如下:
[csharp] view
plain copy
class Program
{
static void Main(string[] args)
{
Facade facade = new Facade();
facade.Method();
}
}
相关文章推荐
- 设计模式:12 外观模式
- .NET设计模式(12):外观模式(Façade Pattern)
- 【Java设计模式12】——外观模式
- 设计模式(12)之外观模式
- 设计模式--12、外观模式
- .NET设计模式(12):外观模式(Façade Pattern)
- 设计模式(12)-----外观模式
- Java常用的设计模式12:常用设计模式之外观模式(结构型模式)
- 设计模式_ 外观模式(12)
- 23种设计模式(12):外观模式(Facade Pattern)
- 设计模式学习笔记(12)——外观模式
- .NET设计模式(12):外观模式(Façade Pattern)
- 设计模式之Facade(外观 总管 Manager)
- 设计模式之Facade外观模式
- 乐在其中设计模式(C#) - 外观模式(Facade Pattern)
- 设计模式(12)-Decorator Pattern
- Java设计模式之外观模式研究
- 乐在其中设计模式(C#) - 外观模式(Facade Pattern)
- C#设计模式(12)-Decorator Pattern
- 设计模式学习笔记(十一)——Facade外观模式