设计模式--桥接模式

设计模式--桥接模式

设计模式--桥接模式

基本介绍

  • 桥接模式(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/

上一篇:Java判等问题:细节决定成败


下一篇:Rein技术博客>Exchange>正文 Exchange 2010与Exchange Online混合部署PART 5:配置边缘