外觀模式應該是程式員最下意識用的一種模式,比如我們習慣性的對複雜系統做一個封裝介面。外觀模式其本質是對一堆複雜對象和應用的介面抽象,對它們進行封裝隔離,對於調用者來說只需要關係介面的實現,而不需要知道內部有哪些對象和調用。 作用 為模塊的一組介面提供一致的界面,定義了一個高層介面,這個介面使得這一模 ...
外觀模式應該是程式員最下意識用的一種模式,比如我們習慣性的對複雜系統做一個封裝介面。外觀模式其本質是對一堆複雜對象和應用的介面抽象,對它們進行封裝隔離,對於調用者來說只需要關係介面的實現,而不需要知道內部有哪些對象和調用。
作用
為模塊的一組介面提供一致的界面,定義了一個高層介面,這個介面使得這一模塊更加容易使用。
類視圖
實現
//複雜或多對象
class objectOne
{
public void operator()
{
cout<<"operator one\n";
}
}
class objectTwo
{
public void operator()
{
cout<<"operator two\n";
}
}
class objectThree
{
public void operator()
{
cout<<"operator three\n";
}
}
class objectFour
{
public void operator()
{
cout<<"operator four\n";
}
}
//外觀實現
class Facade
{
objectOne one;
objectTwo two;
objectThree three;
objectFour four;
public Facade()
{
obj1 = new objectOne();
obj2 = new objectTwo();
obj3 = new objectThree();
obj4 = new objectFour();
}
public void MethodA()
{
cout<<" Fun A()-----\n");
obj1.operator();
obj2.operator();
obj3.operator();
obj4.operator();
}
public void MethodB()
{
cout<<" Fun B()-----\n");
obj4.operator();
obj3.operator();
obj2.operator();
obj1.operator();
}
}
//調用
void main()
{
Facade facade = new Facade();
facade.MethodA();
facade.MethodB();
}
應用場景
- 構建上下層次的模塊時,如果上下進行調用,則會出現強耦合,用外觀模式實現上下級模塊的介面,簡化相互調用的交叉,降低上下層的耦合度;
- 在多個複雜模塊相互協作工作時,向上用外觀類提煉出高層介面,對外隱藏其內部的實現並隔離變化;
- 對單獨模塊或者對複雜模塊的封裝,提煉出外觀類進行封裝訪問,解耦合。