1,需求
某公交车站有线路a到达a地点,线路b到达b地点,现在有旅客c去b地点,d取a地点,需要使用a,b两个线路
2,分析
公交车站可能并不单单是两个线路,可以抽取出来一个接口,每条线路都实现该接口,具有到底目的地的功能
,旅客也可以抽取一个公共的接口,每个旅客为具体的实现。
3,代码
public interface Station {
/**
* 到达目的地
*/
void getTo();
}
public class StationLineA implements Station {
@Override
public void getTo() {
System.out.println("a线路去到a地点");
}
}
public class StationLineB implements Station {
@Override
public void getTo() {
System.out.println("b线路去到b地点");
}
}
public abstract class Guest {
private Station station;
public Guest(Station station) {
this.station = station;
}
public Station getStation() {
return station;
}
public void setStation(Station station) {
this.station = station;
}
abstract void formPerson(Guest guest);
}
/**
* 旅客a
*/
public class GuestA extends Guest{
public GuestA(Station station) {
super(station);
}
void formPerson(Guest guest) {
System.out.println("a顾客");
}
}
public class GuestB extends Guest {
public GuestB(Station station) {
super(station);
}
@Override
void formPerson(Guest guest) {
System.out.println("");
}
}
public class Client {
public static void main(String[] args) {
Station a = new StationLineA();
Station b = new StationLineB();
Guest guest = new GuestA(a);
guest.formPerson(guest);
guest.getStation().getTo();
guest.setStation(b);
guest.formPerson(guest);
guest.getStation().getTo();
}
}
4,总结
桥接模式与适配器模式极其相似,他们的区别在于,他们的应用场景是不一样的,
我们使用适配的时候一般是现有的两个功能需要进行调用,
而桥接模式是我们为了分离抽象与实现而设计的。
5,参考文献
#### 大话设计模式