天天看點

設計模式--橋接模式設計模式--橋接模式

設計模式--橋接模式

設計模式--橋接模式設計模式--橋接模式

基本介紹

  • 橋接模式(Bridge模式)是指:将實作與抽象放在兩個不同的類層次中,使兩個層次可以獨立改變
  • 是一種結構型設計模式
  • Bridge模式給予類的最小設計原則,通過使用封裝、聚合及繼承等行為讓不同等類承擔不同等職責。它等主要特點是把抽象(Abstraction)與行為實作(Implementation)分離,進而可以保持各部分等獨立性以及應對他們等功能擴充

手機操作問題

現在對不同的手機類型的不同品牌實作操作程式設計(比如:開機、上網、打電話)

設計模式--橋接模式設計模式--橋接模式

建立品牌接口

public interface Brand {

    void open();

    void close();

    void call();
}
           

實作類 小米手機

public class Xiaomi implements Brand {
    @Override
    public void open() {
        System.out.println("小米手機開機");
    }

    @Override
    public void close() {
        System.out.println("小米手機關機");
    }

    @Override
    public void call() {
        System.out.println("小米手機打電話");
    }
}           

實作類 VIVO手機

public class Vivo implements Brand{
    @Override
    public void open() {
        System.out.println("vivo手機開機");
    }

    @Override
    public void close() {
        System.out.println("vivo手機關機");
    }

    @Override
    public void call() {
        System.out.println("vivo手機打電話");
    }
}           

建立手機抽象類

public abstract class Phone {
    //組合品牌
    private Brand brand;


    public Phone(Brand brand) {
        this.brand = brand;
    }

    protected void open(){
        this.brand.open();
    }


    protected void close(){
        this.brand.close();
    }

    protected void call(){
        this.brand.call();
    }

}           

建立折疊式手機類

public class FoldedPhone extends Phone{

    public FoldedPhone(Brand brand) {
        super(brand);
    }


    public void open(){
        super.open();
        System.out.println(" 折疊式手機 ");
    }


    public void close(){
        super.close();
        System.out.println(" 折疊式手機 ");
    }

    public void call(){
        super.call();
        System.out.println(" 折疊式手機 ");
    }
}
           

測試

public class Client {

    public static void main(String[] args) {
        Phone phone = new FoldedPhone(new Xiaomi());
        phone.open();
        phone.call();


        Phone phone2 = new FoldedPhone(new Vivo());
        phone2.open();
        phone2.call();
    }
}           
設計模式--橋接模式設計模式--橋接模式

當我們新增品牌 或者手機類型當時候 隻需要增加一個類 就好

增加直立式手機

public class UpRightPhone extends Phone {

    public UpRightPhone(Brand brand) {
        super(brand);
    }


    public void open(){
        super.open();
        System.out.println(" 直立式手機 ");
    }


    public void close(){
        super.close();
        System.out.println(" 直立式手機 ");
    }

    public void call(){
        super.call();
        System.out.println(" 直立式手機 ");
    }
}           
public class Client {

    public static void main(String[] args) {
        Phone phone = new FoldedPhone(new Xiaomi());
        phone.open();
        phone.call();


        System.out.println("-=============================-");

        Phone phone2 = new UpRightPhone(new Vivo());
        phone2.open();
        phone2.call();
    }
}           
設計模式--橋接模式設計模式--橋接模式
  • 在JDBC源碼中就使用類橋接模式

個人部落格:

http://blog.yanxiaolong.cn/