本文借鉴《大话设计模式》,算是对自己学习的总结,也希望分享下所学知识~~
什么是外观模式?
为一组接口(子系统)提供了一个高层接口,使子系统更方便用。
假设有四个子系统:
class SubSystemA
{
public void DoA()
{
}
}
class SubSystemB
{
public void DoB()
{
}
}
class SubSystemC
{
public void DoC()
{
}
}
class SubSystemD
{
public void DoD()
{
}
}
可以使用一个外观类,来自由组合以备外界调用:
class Facade
{
SubSystemA a;
SubSystemB b;
SubSystemC c;
SubSystemD d;
public Facade()
{
a = new SubSystemA();
b = new SubSystemB();
c = new SubSystemC();
d = new SubSystemD();
}
public void DoABC()
{
a.DoA();
b.DoB();
c.DoC();
}
public void DoAD()
{
a.DoA();
d.DoD();
}
}
//for test
Facade facade = new Facade();
facade.DoABC();
facade.DoAD();
外观模式是非常常用的一个模式。
完美的体现了,依赖倒置原则和迪米特法则。
什么时候使用?
1.MVC,将层与层分来,在其之间建立外观Facade。
2.子系统过于复杂。
3.开发新功能依赖源有代码,使用外观模式包裹起来。