1 介紹
經(jīng)過上一講代理模式的學(xué)習(xí)帽哑,<a>小白</a>從自動販賣機中買了畫簡筆畫所需要的裝備,聽說還玩了一把大轉(zhuǎn)盤叹俏。
<a>小白</a> : 大哥大哥妻枕,快看,你看我抽到大獎了粘驰,但我不知道這個玩意兒怎么玩屡谐,你幫我看看唄。
<a>Acey</a>:我的弟蝌数,膩害了愕掏,這個是多色按壓筆。想要正確的使用它顶伞,我們需要先來了解下外觀模式的概念饵撑。
外觀模式(Facade)是一組類似功能的類群剑梳。
<a>小白</a> :then?
<a>Acey</a> :......,(⊙﹏⊙)肄梨,好吧阻荒,你又沒聽懂,所謂功能類似的類群就好比筆芯众羡,只是每支筆芯的顏色不同侨赡,多支筆芯就形成一個集群,外觀模式呢就是為這類集群封裝了下粱侣,就相當于裝筆芯的筆盒羊壹。對于我們使用者來說,我們只需要拿著這個裝有筆芯的筆盒就可以使用了多種顏色的筆了齐婴。而不需要再去買不同顏色的筆了油猫。
<a>小白</a>:I konw,I know柠偶。那我要怎么使用不同顏色的筆呢情妖?
<a>Acey</a>:我們現(xiàn)在就來看看怎么實現(xiàn)。
2 實現(xiàn)
首先我們要知道外觀模式的幾個角色
- Facade:為調(diào)用方提供簡單的調(diào)用接口诱担。(筆盒)
- Package:功能提供者(筆芯)
- Clients:調(diào)用者毡证。
第一步,先準備好筆芯
Red.class / Blue.class / Yellow.class
public class Blue {
public void write(){
System.out.println("藍色筆");
}
}
public class Red {
public void write(){
System.out.println("紅色筆");
}
}
public class Red {
public void write(){
System.out.println("紅色筆");
}
}
第二步蔫仙,向筆盒中裝筆芯
Facade.class
public class Facade {
private Blue blue;
private Yellow yellow;
private Red red;
//裝筆芯
public Facade() {
blue = new Blue();
yellow = new Yellow();
red = new Red();
}
// 使用紅筆
public void writeRed() {
red.write();
}
// 使用藍筆
public void writeBlue() {
blue.write();
}
// 使用黃筆
public void writeYellow() {
yellow.write();
}
}
第三步料睛,試試好使不
MainClass.class
public class MainClass {
public static void main(String[] args) {
Facade pen = new Facade();
pen.writeBlue();//使用藍筆
pen.writeRed();//使用紅筆
pen.writeYellow();//使用黃筆
}
}
<a>小白</a>:(。^▽^)摇邦,好膩害恤煞,那么我們?yōu)槭裁匆眠@么個模式呀,我們直接去買各個顏色的筆不好嘛施籍?
<a>Acey</a> :你想哦居扒,如果我們?nèi)ベI單個顏色的筆的話,我們可能需要跑好幾個店去買丑慎,如果我們只是去買一個裝有很多筆芯的筆的話我們是不是節(jié)省了很多時間呀喜喂,這樣我們同樣可以使用多種顏色,而且我們只需要關(guān)注筆盒中的筆芯就好了立哑,不需要再去關(guān)注各種顏色的筆了夜惭。
<a>小白</a>:哦哦,原來是這樣铛绰,那么我們要換筆芯的話不就非常麻煩了诈茧?
<a>Acey</a>:沒錯,這就是外觀模式的缺點了捂掰,雖然提高了我們的靈活性敢会,但是筆盒與筆芯之間還是存在耦合的曾沈,不利于后期的修改。
<a>小白</a>:好的鸥昏,b( ̄▽ ̄)d 塞俱,我知道啦,我會好好善待這支筆的吏垮。
喜歡的話戳一下喜歡唄障涯。
有什么建議的話希望大家能在下方回復(fù)(●'?'●)
上一篇:代理模式 - 你買的筆多少錢?
下一篇:組合模式 - 哥膳汪,我被我媽罵了