欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

java设计模式7——桥接模式

程序员文章站 2022-03-10 16:15:52
1、桥接模式介绍 2、解决问题 3、代码演示 4、类图示意 5、好处分析 6、弊端分析 7、最佳实现 8、现已经使用的场景 ......

java设计模式7——桥接模式

1、桥接模式介绍

桥接模式是将抽象部分与它的实现部分分离,使他们都可以独立的变化。它是一种对象结构型模式,又称为柄体模式或接口模式。

2、解决问题

2.1、将复杂的组合设计问题转变为可以桥接的组合问题。如电脑的例子,电脑有类型和品牌,两者可以任意组合。

2.2、没有用设计模式时的示意图

java设计模式7——桥接模式

2.3、使用桥接模式后的示意图

将这个场景中的两个变化的维度分离,品牌和类型。两者通过桥接进行两两组合。

java设计模式7——桥接模式

3、代码演示:

3.1、编写品牌的抽象类

package com.xgp.company.结构性模式.桥接模式;

/**
 * 品牌类
 */
public interface brand {
    void info();
}

3.2、由抽象类诞生出品牌

苹果:

package com.xgp.company.结构性模式.桥接模式;

/**
 * 苹果品牌
 */
public class apple implements brand {
    @override
    public void info() {
        system.out.print("苹果");
    }
}

联想:

package com.xgp.company.结构性模式.桥接模式;

public class laptop extends computer {
    public laptop(brand brand) {
        super(brand);
    }

    @override
    protected void info() {
        super.info();
        system.out.println("笔记本");
    }
}

3.3、电脑类型的抽象类

package com.xgp.company.结构性模式.桥接模式;

/**
 * 抽象的电脑类型类
 */
public abstract class computer {

    //组合:品牌,电脑自带品牌
    protected brand brand;

    public computer(brand brand) {
        this.brand = brand;
    }

    protected void info() {
        //自带品牌
        brand.info();
    }
}

3.4、由电脑类型的抽象类诞生实现类

台式电脑:

package com.xgp.company.结构性模式.桥接模式;

public class desktop extends computer {
    public desktop(brand brand) {
        super(brand);
    }

    @override
    protected void info() {
        super.info();
        system.out.println("台式机");
    }
}

笔记本电脑:

package com.xgp.company.结构性模式.桥接模式;

public class laptop extends computer {
    public laptop(brand brand) {
        super(brand);
    }

    @override
    protected void info() {
        super.info();
        system.out.println("笔记本");
    }
}

3.5、编写测试类,进行桥接

package com.xgp.company.结构性模式.桥接模式;

public class test {
    public static void main(string[] args) {
        //苹果笔记本
        computer computer = new laptop(new apple());
        computer.info();
        //联想台式机
        computer computer12 = new desktop(new lenovo());
        computer12.info();
    }
}

输出结果:

苹果笔记本
联想台式机

4、类图示意:

java设计模式7——桥接模式

5、好处分析:

java设计模式7——桥接模式

6、弊端分析:

java设计模式7——桥接模式

7、最佳实现

java设计模式7——桥接模式

8、现已经使用的场景

java设计模式7——桥接模式