1. 程式人生 > >java設計模式之Facade模式

java設計模式之Facade模式

介紹外觀模式之前,首先讓我們來看下面的例子:

假設我們現有一個對外介面FacadeService,裡面有一個對外的方法a();

public interface FacadeService {

    public void a();//這個方法是給外部呼叫的
}

他有一個實現類FacadeServiceImpl,他實現了FacadeService介面的a方法,同時又新增了一個自己的供內部呼叫的方法b;

public class FacadeServiceImpl implements FacadeService {
    public void a() {
        System.out.println("這是給外部呼叫的"
); } public void b() { System.out.println("這是給內部呼叫的"); } }

此時我們再模擬外部呼叫的邏輯

public class FacadeServiceMain {
    public static void main(String[] args) {
        FacadeServiceImpl facadeService = new FacadeServiceImpl();
        facadeService.a();
        facadeService.b();
    }
}

因為a是給外部呼叫用的,此時可以給外部呼叫,但是b是給內部呼叫的,我們不希望給外部呼叫,此時我們可以怎麼做呢?有的人說,可以調整b方法的訪問許可權,使得只能只能同一個包下面的類可以訪問,除了這個方法之外還有別的更優雅的方法嗎?請看下面的例子:

public class FacadeServiceImplForOut implements FacadeService {


    private FacadeService facadeService;

    public FacadeServiceImplForOut(FacadeServiceImpl facadeService){
        this.facadeService=facadeService;
    }
    public void a() {
        facadeService.a();
    }


}
此時FacadeServer物件是一個私有的物件,他只能在本類訪問,同時他實現了FacaseServer介面,提供了能供外部訪問的方法a,這樣是不是實現了外部只能訪問a方法的改造?
public class 
FacadeServiceMain { public static void main(String[] args) { /* FacadeServiceImpl facadeService = new FacadeServiceImpl(); facadeService.a(); facadeService.b();*/ FacadeServiceImpl facadeService = new FacadeServiceImpl(); FacadeServiceImplForOut fout = new FacadeServiceImplForOut(facadeService); fout.a(); } }

這就是facade(外觀模式),他提供了一個供外部client呼叫的層Facade,由Facade層去組織呼叫真正的業務層,對於呼叫client來說,真正的業務層對他來說是透明的,這樣做的好處是讓呼叫層client和真正的業務層解耦,同時在Facade層也可以做更多的事情,比如上面的遮蔽client不該訪問到的方法等等

相關推薦

java設計模式Facade模式

介紹外觀模式之前,首先讓我們來看下面的例子:假設我們現有一個對外介面FacadeService,裡面有一個對外的方法a();public interface FacadeService { public void a();//這個方法是給外部呼叫的 }他有一個實現類

淺談JAVA設計模式——外觀模式(Facade)

一、概述 為子系統中的一組介面提供一個一致的介面,Facade模式定義了一個高層介面,這個介面使得這一子系統更加容易使用。 二、適用性 1.當你要為一個複雜子系統提供一個簡單介面時。子系統往往因為不斷演化而變得越來越 複雜。大多數模式使用時都會產生更多更小的類。這使得子系

java設計模式外觀模式

數據 開發 移位運算 傳遞 保存 load space 法則 rep 【學習難度:★☆☆☆☆,使用頻率:★★★★★】 外觀模式是一種使用頻率非常高的結構型設計模式,它通過引入一個外觀角色來簡化客戶端與子系統之間的交互,為復雜的子系統調用提供一個統一的入口,降低子系統與

java設計模式代理模式

單擊 [] 部分 空間 快遞公司 存儲 交互 idt encoding 【學習難度:★★★☆☆,使用頻率:★★★★☆】 代理模式是常用的結構型設計模式之一,當無法直接訪問某個對象或訪問某個對象存在困難時可以通過一個代理對象來間接訪問,為了保證客戶端使用的透明性,所訪問的真實

淺析JAVA設計模式工廠模式(二)

1.2 源碼 pub color post del tar pop south 1 工廠方法模式簡單介紹 工廠方法 (Factroy Method)模式:又稱多態性工廠模式(Polymorphic Factory),在這樣的模式中,核心工廠不再是一個詳

Java設計模式包裝模式

col exceptio 設計 成員變量 span 包裝 包裝模式 logs 返回 有時候一個對象的方法可能不是我們想要的功能,我們希望能將這個方法覆寫。而對於覆寫,我們最直白的感覺就是通過子類繼承的方式,但是有時候對於使用web開發而言,我們能知道獲取對象的實現接口,而真

Java設計模式工廠模式

href 1.2 net main override create 靜態工廠方法 lan soft 工廠方法模式 工廠方法模式分為三種:普通工廠模式、多個工廠方法模式和靜態工廠方法模式。 1、普通工廠模式 普通工廠模式就是建立一個工廠類,對實現了同一接口的一些類進行實

java設計模式策略模式總結

客戶端 出場 cnblogs ava java設計 bsp image 需要 com 策略模式的定義:(定義截自http://www.cnblogs.com/whgk/p/6087064.html) 1、策略模式定義了算法族,分別封裝起來,讓他們之間可以互相替換,此模式讓算

java設計模式代理模式模式總結

女的 基礎 滿足 擴展 bsp span 代理 方法 這就是 定義:代理模式這種設計模式是一種使用代理對象來執行目標對象的方法並在代理對象中增強目標對象方法的一種設計模式。 解讀定義: 1.代理對象和目標對象有共同的接口;

java設計模式代理模式()

images 缺點 封裝 增加 處理 其他 -1 target 目標 代理模式(Proxy)     代理模式的主要作用是為其他對象提供一種代理以控制對這個對象的訪問。在某些情況下,一個對象不想或不能直接引用其他的對象,而代理對象可以在客戶端和目標之間起   到中介的模式。

java設計模式模板模式

tty 理解 sta star 測試類 strong 實現 開閉原則 sep   近日在項目開發中看到一段代碼不理解,在方法中居然調用抽象方法。後來在網上查說是模板模式 public abstract class JWBaseProcess implements JWP

Java設計模式策略模式

pattern 管理 父類 interface face 缺點 this err 相互 策略模式屬於對象的行為模式,策略模式定義了一系列的算法,並將每一個算法封裝起來,而且使它們還可以相互替換,策略模式讓算法獨立於使用它的客戶而獨立變化。策略模式使這些算法在客

Java設計模式結構模式

tin 提高 mode his base 說明 concrete 抽象類 table 一、外觀模式 分析:外觀模式是為子系統的一組接口提供一個統一的界面,數據庫JDBC連接應用就是外觀模式的一個典型例子,特點:降低系統的復雜度,增加靈活性。結果:代碼示例: public

java設計模式factory模式

得到 裏的 schema java設計 pack factory 時代 ext 根據 factory模式:即工廠模式,工廠大家應該很了解,主要是根據用戶需求生產產品的,舉個在學生時代很親近生活的簡單例子,如:中午下課了和同學們一起去食堂吃飯,走到xxx食堂窗口,裏面阿姨會問

Java設計模式(9)——創建型模式裝飾模式

block 擴展 str 分享 增加 image tro col 技術 一、概述   動態地給一個對象添加一些額外的職責。就增加功能來說, Decorator模式相比生成子類更為靈活。該模式以對客 戶端透明的方式擴展對象的功能。   UML簡圖      角

Java設計模式(23)——行為模式訪問者模式

font string 概念 str ron 直接 integer span das 一、概述   概念      作用於某個對象群中各個對象的操作。它可以使你在不改變這些對象本身的情況下,定義作用於這些對象的新操作。   引入   試想這樣一個場景,在一

Java設計模式工廠模式(二):抽象工廠模式

mar 模式 blank http left taxi ref www. app 2碳依5FVL冒傲3http://t.docin.com/etw488 am懦7鈉N山段9慌Q闌http://shequ.docin.com/ipu5657 iK1諾5N鍛認EUK剖嘲肆h

JAVA 設計模式 工廠模式

java 工廠模式 設計模式 1、為什麽要使用工廠模式? 比方說,一位滴滴司機,如果要去開車掙錢的話,他得自己會制造汽車,然後,才能使用汽車掙錢;對於這位司機來說,要求很高了,畢竟汽車很難制造出來; 如果使用工廠模式的話,這位司機,只需要知道汽車工廠就可以了,直接去工廠提車就行。從

java設計模式代理模式 ,以及和java 回調機制的區別

-s pac 回調模式 unit 為什麽 創建 col 重要 溫習 java 代理模式就是:       將自己要做的事交給別人去做(這個別人就是代理者,自己就是被代理者),為什麽自己能做的要交給別人去做了?假如一個小學生小明,現在要寫作業,但是又想玩遊戲,他更想玩遊戲

JAVA基礎——設計模式單列模式

因此 style 對象 lba 原子 類型 div 等於 加載 一:單例設計模式 Singleton是一種創建型模式,指某個類采用Singleton模式,則在這個類被創建後,只可能產生一個實例供外部訪問,並且提供一個全局的訪問點。 單例設計模式的特點: 單例類只能有一個實