概念:
Bridge:将抽象部分与它的实现部分分离,使它们都可以独立地变化。
烈日,当空;没有一丝风,真的让人感觉透不过气来。想起去年夏天在没有空调的房子里写代码,^_^,真是对人性的一种考验。AndyTao正想着,不觉笑了。午休时间也快过了,继续写我的代码吧。
“Andy,过来帮我看看嘛!”一串银铃声传了过来。
“唉,美女相邀,怎能不动啊。”AndyTao心里想着,没敢说出口。“我说,你又怎么了?就你事多。”
“上次技术讨论会上听你说过,如果一个抽象类或者接口有多个具体的实现类(concrete subclass)的时候,为了不至于由于使用单纯继承进行抽象类或接口的具体实现而导致代码混乱和可重用性不强,你说应当采用Bridge设计模式,这是怎么一回事啊?你看我现在这个例子采用继承不是很好吗?”
“哦,我看看。”
public interface Draw {
public void paint();
}
public class DrawCircle implements Draw {
public void paint(){
System.out.println("paint Circle");
……
}
……
}
public class DrawAngle implements Draw {
public void paint(){
System.out.println("paint Angle");
……
}
……
}
“你看看,我这里不是各干其事,做得挺好嘛。”
“呵呵,听我细细讲来。通常,当一个抽象类或接口有多个具体实现(concrete subclass),这些concrete之间关系可能有以下两种情况:第一种是,这多个具体实现之间恰好是并列关系,就像你的这段代码,有两个concrete class:画圆和画三角;这两个形状上的图形是并列的,没有相对概念上的重复,那么我们只要使用继承就可以了。……”
“别卖关子了好不好!”“……”“好啦好啦,我请你喝可乐可以吧?”
嘿嘿,奸计得逞,AndyTao继续说道,“但是,我们要考虑到第二种情况,如果我们两个或多个具体实现之间有概念重复,那么需要我们把抽象共同部分和行为共同部分各自独立开来,原来是准备放在一个接口里,现在需要设计两个接口,分别放置抽象部分和行为部分。”