天天看點

設計模式GOF23——外觀模式

外觀模式(facade)是結構性模式的一種,也有人稱它為門面模式。結構型模式的核心作用是從程式的結構上實作低耦合,進而可以擴大整體的類結構,用來解決更大的問題。

模式的核心

外觀模式的核心就是為子系統提供統一的入口,封裝系統的複雜性,便于用戶端調用。

模式角色

外觀角色:在用戶端可以調用它的方法,它會把用戶端調用需要的操作放在一起,并且封裝起來,對外不暴露細節。

子系統角色:子系統是用戶端使用該功能的時候需要調用的對象們。

模式的實作

//外觀角色
public class Tour {
    //子系統的調用和子系統的操作封裝
    public void myTour(){
        Hotle h = new Hotle();
        h.reserve();
        Spots s = new Spots();
        s.buyTicket();
        Transport t = new Transport();
        t.buyTickets();
    }
}
//子系統角色
class Hotle{
    //子系統角色中需要調用的方法
    public void reserve(){
        System.out.println("預定本家酒店");
    }
}
//子系統角色
class  Spots {
    //子系統角色中需要調用的方法
    public void buyTicket(){
        System.out.println("購買了本景點的票");
    }
}
//子系統角色
class  Transport{
    //子系統角色中需要調用的方法
    public void buyTickets(){
        System.out.println("購買了來回的車票");
    }
}
           

模式的評價

外觀模式是設計模式中用的比較多的一個。它非常符合迪米特法則,将操作的具體實作細節隐藏起來,降低耦合,減少複雜度。而且它有利于單一職責原則,讓類專注的隻做自己這一層次的功能。它還提高了便捷性,用戶端無需處理操作的細節中的邏輯,隻需要調用外觀角色即可。

繼續閱讀