博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
设计模式-14-桥接模式
阅读量:5357 次
发布时间:2019-06-15

本文共 2319 字,大约阅读时间需要 7 分钟。

简介:把事物对象和其具体行为、具体特征分离开来,使它们可以各自独立的变化,事物对象仅是一个抽象的概念;

   如“圆形”、“三角形”归于抽象的“形状”之下,而“画圆”、“画三角”归于实现行为的“画图”类之下,然后由“形状”调用“画图”。

目的:

总结:将抽象和行为实现分离,实现类的最小设计原则,保持独立性

组成:抽象类, 行为接口,行为实现

1,抽象类

package com.design.n.bridge;/** * 抽象类 */public abstract class Car {    //定义引擎    private EngineService engineService;    public Car(EngineService engineService) {        super();        this.engineService = engineService;    }        //定义子类的实现细节    public abstract void installEngine();            public EngineService getEngineService() {        return engineService;    }}

 

package com.design.n.bridge;/** * Bus汽车实现细节 */public class BusCar extends Car{    public BusCar(EngineService engineService) {        super(engineService);    }    @Override    public void installEngine() {        System.out.print("Bus 汽车 : 安装引擎   ... ... ");        this.getEngineService().installEngine();    }}

 

package com.design.n.bridge;/** * Jeep汽车实现细节 */public class JeepCar extends Car{    public JeepCar(EngineService engineService) {        super(engineService);    }    @Override    public void installEngine() {        System.out.print("Jeep 汽车 : 安装引擎   ... ... ");        this.getEngineService().installEngine();    }}

 

2,行为接口

package com.design.n.bridge;/** * 引擎接口 *  * 桥接模式 - 行为实现 */public interface EngineService {        /**     * 安装引擎     */    void installEngine();}

3,行为实现类

package com.design.n.bridge;/** * 引擎-A */public class AEngineServiceImpl implements EngineService {    @Override    public void installEngine() {        System.out.println("安装引擎 - A");    }}

 

package com.design.n.bridge;/** * 引擎 - B */public class BEngineServiceImpl implements EngineService {    @Override    public void installEngine() {        System.out.println("安装引擎 - B");    }}

4,Main

package com.design.n.bridge;/** * 桥接模式 *  * 概括:将抽象和行为实现分离,实现类的最小设计原则,保持独立性 */public class MainTest {        public static void main(String[] args) {                //行为实现        EngineService engineA = new AEngineServiceImpl();        EngineService engineB = new BEngineServiceImpl();                //抽象类        Car bus = new BusCar(engineA);        bus.installEngine();                Car jeep = new JeepCar(engineB);        jeep.installEngine();    }}

6,Result

Bus 汽车 : 安装引擎   ... ... 安装引擎 - AJeep 汽车 : 安装引擎   ... ... 安装引擎 - B

 

转载于:https://www.cnblogs.com/wanhua-wu/p/7245558.html

你可能感兴趣的文章
团队项目--未完待续
查看>>
双重标准,我该怎么解决
查看>>
python中的网页标签等字符处理
查看>>
Mybatis输入类型和结果类型
查看>>
Linux常用命令(五)
查看>>
Linux常用命令(四)
查看>>
Linux常用命令(六)
查看>>
Linux常用命令(六)
查看>>
Linux常用命令(八)
查看>>
Linux常用命令(七)
查看>>
Linux常用命令(九)
查看>>
Linux常用命令(十一)
查看>>
Linux常用命令(十)
查看>>
实验吧之这就是一个坑
查看>>
Linux常用命令(十二)
查看>>
Linux常用命令(十三)
查看>>
Linux常用命令(十五)
查看>>
Linux常用命令(十四)
查看>>
Linux常用命令(十七)
查看>>
Linux常用命令(十六)
查看>>