一鲤脏,外觀模式詳解
-
概念
外觀模式主要目的在于讓外部減少與內(nèi)部系統(tǒng)多個(gè)模塊的交互驯耻,從而讓外部能夠更簡(jiǎn)單的使用子系統(tǒng)泌射。它負(fù)責(zé)把客戶端的請(qǐng)求轉(zhuǎn)發(fā)給子系統(tǒng)內(nèi)部的各個(gè)模塊進(jìn)行處理 -
使用場(chǎng)景
(1)為一個(gè)復(fù)雜的系統(tǒng)提供一個(gè)而簡(jiǎn)單的接口
(2)客戶程序與抽象類的實(shí)現(xiàn)部分之間存在很大的依賴性
(3)當(dāng)你需要構(gòu)建一個(gè)層次結(jié)構(gòu)的子系統(tǒng) -
UML
image.png - 代碼示例
public class Facede {
private ModuleA moduleA;
private ModuleB moduleB;
private ModuleC moduleC;
private Facede() {
moduleA = new ModuleA();
moduleB = new ModuleB();
moduleC = new ModuleC();
}
public static Facede getInstance() {
return FacedeHolder.facede;
}
private static class FacedeHolder {
private static final Facede facede = new Facede();
}
public void testOperation() {
moduleA.testA();
moduleB.testB();
moduleC.testC();
}
}
Facede.getInstance().testOperation();
-
優(yōu)點(diǎn)
(1)由于Facede類封裝了各模塊交互的過程国裳,所以之后內(nèi)部模塊調(diào)用關(guān)系發(fā)生了變化煮甥,只需要修改Facade實(shí)現(xiàn)即可
(2)Facade實(shí)現(xiàn)可以被多個(gè)客戶端調(diào)用
二盗温,外觀模式在android中的實(shí)際應(yīng)用
-
Context
context中的contextImpl是android中的外觀類