介绍
桥接模式,将抽象部分与它实现的部分分离,使得它们可以独立变化,也称为柄体(Handle and Body)模式,将继承转换为关联,降低类之间的耦合.
例如: 厨师有 做菜 这个技能, 那么 做菜(蒸,炒,煮,油炸等) 这个技能就可以将这个行为抽象出来, 而不用为使用不同做菜方式的不同厨师都创建一个类
UML图
代码
烹饪接口
public interface CookOperation {
void cooking();
}
厨师的基类中,需要一个烹饪这个技能的实例.
public abstract class AbstractChef {
private CookOperation cookOperation;
public AbstractChef(CookOperation cookOperation) {
this.cookOperation = cookOperation;
}
abstract void doDeliciousFood();
}
主厨的具体烹饪方式可由调用者进行设置.
public class MasterChef extends AbstractChef {
public MasterChef(CookOperation cookOperation) {
super(cookOperation);
}
void doDeliciousFood() {
// 买菜
// 洗菜
// 最后烹饪
cookOperation.cooking();
}
}
采用煮的方式进行烹饪
public class BoilCookOperation implements CookOperation {
public void cooking() {
// 煮熟食物
}
}
uml图中其余类,类似
参考
http://design-patterns.readthedocs.io/zh_CN/latest/structural_patterns/bridge.html
http://www.cnblogs.com/houleixx/archive/2008/02/23/1078877.html
http://blog.csdn.net/janice0529/article/details/44102637
http://blog.csdn.net/shaopeng5211/article/details/8827507