Java 設計模式之外觀模式的作用

大雄45發表於2021-05-08
導讀 Java 設計模式——外觀模式:為子系統中的一組介面提供一個一致的介面,該模式定義了一個高層介面,這個介面使這個子系統更加容易使用。

Java 設計模式之外觀模式的作用Java 設計模式之外觀模式的作用

外觀模式的作用
  1. 鬆散耦合,外觀模式鬆散了客戶端與子系統的耦合關係,讓子系統內部的模組能更容易擴充套件和維護。
  2. 簡單易用,外觀模式讓子系統更加易用,客戶端不再需要了解子系統內部的實現,也不需要跟眾多子系統內部的模組進行互動,只需要跟門面類互動就可以了。
  3. 更好的劃分訪問層次-透過合理使用 Facade,可以幫助我們更好地劃分訪問的層次。有些方法是對系統外的,有些方法是系統內部使用的。把需要暴露給外部的功能集中到門面中,這樣既方便客戶端使用,也很好地隱藏了內部的細節。
外觀模式的角色
  1. SubSystem: 子系統角色。表示一個系統的子系統或模組。
  2. Facade: 外觀角色,客戶端透過操作外觀角色從而達到控制子系統角色的目的。對於客戶端來說,外觀角色好比一道屏障,對客戶端遮蔽了子系統的具體實現。
例項探究

假設一臺電腦,它包含了 CPU(處理器),Memory(記憶體) ,Disk(硬碟)這幾個部件,若想要啟動電腦,則先後必須啟動 CPU、Memory、Disk。關閉也是如此。

但是實際上我們在電腦開/關機時根本不需要去操作這些元件,因為電腦已經幫我們都處理好了,並隱藏了這些東西。

這些元件好比子系統角色,而電腦就是一個外觀角色。

SubSystem 子系統角色

public class CPU {   
    public void startup(){  
        System.out.println("cpu startup!");  
    }  
    public void shutdown(){  
        System.out.println("cpu shutdown!");  
    }  
}
 
public class Memory {    
    public void startup(){  
        System.out.println("memory startup!");  
    }  
    public void shutdown(){  
        System.out.println("memory shutdown!");  
    }  
} 
 
public class Disk {  
    public void startup(){  
        System.out.println("disk startup!");  
    }  
    public void shutdown(){  
        System.out.println("disk shutdown!");  
    }  
}

Facade 外觀角色

public class Computer {  
    private CPU cpu;  
    private Memory memory;  
    private Disk disk;  
 
    public Computer(){  
        cpu = new CPU();  
        memory = new Memory();  
        disk = new Disk();  
    }  
 
    public void startup(){  
        System.out.println("start the computer!");  
        cpu.startup();  
        memory.startup();  
        disk.startup();  
        System.out.println("start computer finished!");  
    }  
 
    public void shutdown(){  
        System.out.println("begin to close the computer!");  
        cpu.shutdown();  
        memory.shutdown();  
        disk.shutdown();  
        System.out.println("computer closed!");  
    }  
}

具體呼叫如下:

Computer computer = new Computer();  
computer.startup();  
computer.shutdown();


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2771406/,如需轉載,請註明出處,否則將追究法律責任。

相關文章