桥接模式的核心思想是将抽象与实现分离,使它们都可以独立的变化而不互相影响,目的是脱耦。
1、模式中的角色
抽象角色(Abstraction 接口):给出抽象化定义并持有一个实现化对象的引用。
修正抽象化角色(Refined Abstraction类):扩展抽象化角色,改变和修正父类对抽象化的定义。
实现化角色(Implementor接口):给出实现化的接口角色的接口,但不给出具体的实现。
具体实现化角色(Concrete Implementor类):给出实现化角色接口的具体实现。
2、角色关系图
3、实例
描述:现在有多种汽车,每种汽车分运输客人和运输货物
扫描二维码关注公众号,回复:
2976833 查看本文章
a.抽象角色(Vehicle接口)
package com.interfaces;
public abstract class Vehicle {
private Transport implementor;
public void transport(){
implementor.transport();
}
public Transport getImplementor() {
return implementor;
}
public void setImplementor(Transport implementor) {
this.implementor = implementor;
}
}
b.修正抽象化角色(Train类和Car类)
Train类:
package com.vehicleImpl;
import com.interfaces.Vehicle;
public class Train extends Vehicle{
@Override
public void transport() {
// TODO Auto-generated method stub
System.out.print("Train: ");
super.transport();
}
}
Car类:
package com.vehicleImpl;
import com.interfaces.Vehicle;
public class Car extends Vehicle {
@Override
public void transport() {
// TODO Auto-generated method stub
System.out.print("car: ");
super.transport();
}
}
c.实现化角色(Transport接口)
package com.interfaces;
public interface Transport {
public abstract void transport();
}
d.
具体实现化角色(PersonTransport类和GoodsTransport类)
PersonTransport类:
package com.transportImpl;
import com.interfaces.Transport;
public class PersonTransport implements Transport {
@Override
public void transport() {
// TODO Auto-generated method stub
System.out.print("Transport person\n");
}
}
GoodsTransport类
package com.transportImpl;
import com.interfaces.Transport;
public class GoodsTransport implements Transport{
@Override
public void transport() {
// TODO Auto-generated method stub
System.out.print("Transport goods\n");
}
}
后记:
点点滴滴