设计模式-14-桥接模式

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

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

目的:

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

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

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 汽车 : 安装引擎   ... ... 安装引擎 - A
Jeep 汽车 : 安装引擎   ... ... 安装引擎 - B

 

posted @ 2017-07-27 16:28  wanhua.wu  阅读(131)  评论(0编辑  收藏  举报