橋接模式VS代理模式

橋接模式與代理模式區(qū)別如下:

橋接模式(Bridge Pattern)是指將抽象和實現(xiàn)解耦,讓它們可以獨立變化。一個類存在兩個(或多個)獨立變化的維度,通過組合的方式,讓這兩個(或多個)維度可以獨立進行擴展。
代理模式(Proxy Pattern)是指用一個代理對象來代替對真實對象的引用。主要用來控制對一個對象的訪問,同時又能保證安全。

橋接模式示例:

public interface Shape {
    void draw();
}

public class Circle implements Shape {
    @Override
    public void draw() {
        System.out.println("Drawing Circle...");
    }
}

public class Rectangle implements Shape {
    @Override
    public void draw() {
        System.out.println("Drawing Rectangle...");
    }
}

public class ShapeBridge implements Shape {
    private int type; // 類型,1表示圓形,2表示矩形
    public ShapeBridge(int type) {
        this.type = type;
    }
    @Override
    public void draw() {
        if(type == 1) {
            Circle circle = new Circle();
            circle.draw();
        } else if(type == 2) {
            Rectangle rectangle = new Rectangle();
            rectangle.draw();
        } else {
            System.out.println("Invalid type!");
        }
    }
}

在上述代碼中,Shape是一個接口,Circle和Rectangle是實現(xiàn)了Shape接口的具體類,它們分別代表圓形和矩形。ShapeBridge是一個橋接類,它也實現(xiàn)了Shape接口,并通過type屬性來區(qū)分是圓形還是矩形,在draw()方法中根據(jù)type屬性的值創(chuàng)建對應(yīng)的圓形或矩形對象,并調(diào)用它們的draw()方法進行繪制。這樣,通過橋接模式,我們可以很方便地擴展出更多的形狀對象。

代理模式示例:

public interface IUserService {
    void login();
}

public class UserService implements IUserService {
    @Override
    public void login() {
        System.out.println("Logging in...");
    }
}

public class UserServiceProxy implements IUserService {
    private IUserService userService;
    public UserServiceProxy(IUserService userService) {
        this.userService = userService;
    }
    @Override
    public void login() {
        System.out.println("Checking credentials..."); // 進行一些前置處理,例如驗證用戶信息等。
        userService.login(); // 調(diào)用真實的服務(wù)對象的方法進行登錄。
    }
}

在上述代碼中,IUserService是一個接口,UserService是實現(xiàn)了IUserService接口的具體類,它代表一個真實的用戶服務(wù)對象。UserServiceProxy是一個代理類,它也實現(xiàn)了IUserService接口,并在login()方法中進行一些前置處理(例如驗證用戶信息等),然后調(diào)用真實的服務(wù)對象的login()方法進行登錄。通過代理模式,我們可以在調(diào)用真實的服務(wù)對象之前加入一些額外的邏輯處理,從而增強系統(tǒng)的靈活性和可維護性。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容