1.桥接模式概念
将抽象部分与它的实现部分分离,使它们都可以独立地变化。
2.桥接模式的关键组成部分
1)抽象 (Abstraction): 定义使用实现部分的接口
2)细化抽象 (Refined Abstraction): 扩展抽象类,为实现部分定义新的接口。
3)实现者 (Implementor): 定义实现部分的接口。
4)具体实现者 (Concrete Implementors): 实现实现者接口,并提供具体的实现方法。
3.举个栗子
以车的类型和颜色为例:车的类型可以有很多中(小汽车,卡车,拖拉机等等),汽车的颜色也可以有很多中(红色,白色,黑色等)。
4.代码实现
1)ColorType接口
package org.xiji.brige;
public interface CarType {
/**
*
* 获取车类型
*/
String getType();
}
2)LorryCar实现类
package org.xiji.brige;
/**
* 货车
*/
public class LorryCar implements CarType{
@Override
public String getType() {
return "货车";
}
}
3)BusCar实现类
package org.xiji.brige;
/**
* 客车
*/
public class BusCar implements CarType{
@Override
public String getType() {
return "客车";
}
}
4)CarColor实现类
package org.xiji.brige;
/**
* 车抽象类
*/
public abstract class CarColor {
/**
* 车类型
*/
protected CarType carType;
public CarColor(CarType carType) {
this.carType = carType;
}
/**
*
* 抽象方法
*/
public abstract String getCarColor();
/**
* 介绍汽车
*/
public void introduceCar(){
System.out.println("这是"+carType.getType()+"是"+getCarColor());
}
}
5)RedCar实现类
package org.xiji.brige;
/**
* 红色
*/
public class RedCar extends CarColor{
public RedCar(CarType carType) {
super(carType);
}
@Override
public String getCarColor() {
return "红色";
}
}
6)BlackCar实现类
package org.xiji.brige;
/**
* 黑色
*/
public class BlackCar extends CarColor{
public BlackCar(CarType carType) {
super(carType);
}
@Override
public String getCarColor() {
return "黑色";
}
}
7)桥接测试类
package org.xiji.brige;
/**
* 桥接模式测试类
*/
public class BridgeMain {
public static void main(String[] args) {
//创建车的类型
//货车
LorryCar lorryCar = new LorryCar();
//客车
BusCar busCar = new BusCar();
//创建红色客车
System.out.println("=================================");
RedCar redBusCar = new RedCar(busCar);
redBusCar.introduceCar();
System.out.println("=================================");
//创建红色的货车
System.out.println("=================================");
RedCar redLorryCar = new RedCar(lorryCar);
redLorryCar.introduceCar();
System.out.println("=================================");
//创建黑色的客车
System.out.println("=================================");
BlackCar blackBusCar = new BlackCar(busCar);
blackBusCar.introduceCar();
System.out.println("=================================");
//创建黑色的货车
System.out.println("=================================");
BlackCar blackLorryCar = new BlackCar(lorryCar);
blackLorryCar.introduceCar();
System.out.println("=================================");
}
}
8)测试结果