四、桥接模式
桥接模式关注抽象的设计,顾名思义,你可以创建一个桥,然后把这些抽象方法移到接口中。这样,抽象就将依赖于接口的实现。
桥接模式的意图是将抽象与抽象方法的实现相互分离来实现解耦,以便二者可以相互独立的变化。
桥接模式的好处:优先使用对象的合成/聚合将有助于你保持每个类被封装,并被集中在单个任务上,这样类和类继承层次会保持较小规模,并且不大可能增长为不可控制的庞然大物。
下面是示例代码:
/**
* 手机软件
* @author ripper
*
*/
public abstract class HandsetSoft {
public abstract void run();
}
/**
* 手机游戏
* @author ripper
*
*/
public class HandsetGame extends HandsetSoft {
@Override
public void run() {
System.out.println("运行手机游戏");
}
}
public class HandsetAddressList extends HandsetSoft {
@Override
public void run() {
System.out.println("运行手机通讯录!");
}
}
/**
* 手机品牌
* @author ripper
*
*/
public abstract class HandsetBrand {
public abstract void run();
protected HandsetSoft soft;
public HandsetBrand(HandsetSoft soft){
this.soft = soft;
}
public HandsetBrand() {
}
public void setSoft(HandsetSoft soft) {
this.soft = soft;
}
public HandsetSoft getSoft() {
return soft;
}
}
/**
* 手机品牌M
* @author ripper
*
*/
public class HandsetBrandM extends HandsetBrand {
public HandsetBrandM(){
System.out.println("M型手机");
}
@Override
public void run() {
soft.run();
}
}
/**
* 手机品牌N
* @author ripper
*
*/
public class HandsetBrandN extends HandsetBrand {
public HandsetBrandN(){
System.out.println("N型手机");
}
@Override
public void run() {
soft.run();
}
}