Java設計模式之外觀模式示例
1.什麼是外觀模式
當一個使用者類需要和某個系統中的多個子系統打交道時,為了避免該類和子系統中的類產生過多的依賴關係,可以採用外觀模式。外觀模式,為這些子系統提供一個外觀類進行功能的封裝,外觀類負責和子系統中的類打交道,使用者類和外觀類打交道,簡化了使用者類和子系統進行互動和依賴。
2.如何實現
1)子系統,是若干個類的集合,這些類協同為使用者提供所需的功能,子系統中的任何類都不包含外觀類的引用
2)外觀類(Facade),該類包含子系統中全部或部分類的例項引用。外觀類可以替代子系統中的類和使用者打打交道。
3.程式碼實現
以一個廣告系統做案例,該系統包含CheckWord,Charge,TypeSeting三個子類。
AdFacade是這個子系的外觀類,負責和使用者類進行互動,並呼叫子系統中的功能實現使用者需求。
1)子系統CheckWord
/** * 子系統1 * 廣告檢查系統 * 完成廣告字數計算 */ public class CheckWord { int amount; String ad; public CheckWord (String ad){ this.ad = ad; } /** * 計算廣告字數,按字數收費 * @return */ public int setAmout( ){ System.out.println("計算廣告字數"); amount = ad.length(); return amount; } }
2)Charge
/** * 子系統2 * 計算廣告價格 */ public class Charge { CheckWord word; public int price; public Charge(CheckWord word){ this.word = word; } public int giveCharge( ){ //計算廣告價格 System.out.println("計算價格"); price = word.amount*100; return price; } }
3)TypeSetting
/** * 子系統3 * 廣告排版 */ public class TypeSetting { private String ad; public TypeSetting(String ad){ this.ad = ad; } public void typeSetting(){ System.out.println("廣告排版"); } }
4)外觀類
/** * 外觀類 * 包含子系統中全部或部分類。 * 這個類替代子系統和使用者類打交道, * 所有使用者想要完成的功能由這個類進行呼叫, * 避免了使用者類和子系統過多的依賴。 */ public class AdFacade { private CheckWord checkWord; private Charge charge; private TypeSetting typeSetting; public AdFacade(String ad){ this.checkWord = new CheckWord(ad); this.charge = new Charge(checkWord); this.typeSetting = new TypeSetting(ad); } /** * 完成使用者釋出廣告的任務 */ public void finishAdTask(){ checkWord.setAmout(); charge.giveCharge(); typeSetting.typeSetting(); } }
5)測試類
public class Main { public static void main(String args[]){ String ad ="hello world"; AdFacade adFacade = new AdFacade(ad); adFacade.finishAdTask(); } } public class Main { public static void main(String args[]){ String ad ="hello world"; AdFacade adFacade = new AdFacade(ad); adFacade.finishAdTask(); } }
到此這篇關於Java設計模式之外觀模式示例詳解的文章就介紹到這了
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69901823/viewspace-2913386/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Java設計模式之外觀模式Java設計模式
- Java 設計模式之外觀模式的作用Java設計模式
- 設計模式之外觀模式設計模式
- PHP設計模式之外觀模式PHP設計模式
- go設計模式之外觀模式Go設計模式
- JavaScript設計模式經典之外觀模式JavaScript設計模式
- 設計模式(十五)----結構型模式之外觀模式設計模式
- IOS設計模式第三篇之外觀設計模式iOS設計模式
- java設計模式-外觀模式Java設計模式
- JavaScript設計模式系列四之外觀模式(附案例原始碼)JavaScript設計模式原始碼
- Java設計模式之策略模式示例Java設計模式
- Java設計模式11:外觀模式Java設計模式
- 設計模式系列之外觀模式(Facade Pattern)——提供統一的入口設計模式
- 設計模式---外觀設計模式設計模式
- 設計模式-外觀模式設計模式
- java23種設計模式-門面模式(外觀模式)Java設計模式
- 設計模式(十)外觀模式設計模式
- 設計模式系列-外觀模式設計模式
- 設計模式(十):外觀模式設計模式
- Python設計模式-外觀模式Python設計模式
- 極簡設計模式-外觀模式設計模式
- JS 設計模式 十一(外觀模式)JS設計模式
- 設計模式之【門面模式(外觀模式)】設計模式
- 【設計模式】外觀設計模式
- 《Head First 設計模式》:外觀模式設計模式
- 設計模式第六講-外觀模式設計模式
- 【23種設計模式】外觀模式(十)設計模式
- 23種設計模式(8)-外觀模式設計模式
- 通俗 Python 設計模式——外觀模式Python設計模式
- Java進階篇設計模式之五-----外觀模式和裝飾器模式Java設計模式
- Java設計模式——模板設計模式Java設計模式
- Java設計模式——命令模式Java設計模式
- Java設計模式—代理模式Java設計模式
- Java設計模式-代理模式Java設計模式
- Java設計模式:代理模式Java設計模式
- 設計模式 | 外觀模式及典型應用設計模式
- 設計模式——9外觀模式(Facade)設計模式
- 2020重新出發,JAVA設計模式 之十 外觀模式Java設計模式