标签:
桥模式:将某个问题抽象的不同形式分别与该问题的具体实现部分相分离,使他们都可以独立变化,并能够动态结合。
例如电视厂商海尔,长虹生产21寸,29寸电视机。从这里要将它们分离出来,就用到桥模式。电视机与电视机生产厂商挂桥,从而,分离出不同厂商的实现,与不同电视机型号的实现.
从上图可以看出,将实际抽象分离出来。
看下代码
创建电视机
1 public abstract class Television { 2 //电视厂商 3 protected TelevisionMaker televisionMaker; 4 //收看电视 5 abstract public void teleview(TelevisionMaker televisionMaker); 6 }
创建生产厂商
1 public abstract class TelevisionMaker { 2 abstract public void produce(); 3 }
电视机的型号,即继承电视机类
1 public class Inch21 extends Television{ 2 3 public void teleview(TelevisionMaker televisionMaker) { 4 System.out.println("21寸电视"); 5 } 6 7 }
1 public class Inch29 extends Television{ 2 3 public void teleview(TelevisionMaker televisionMaker) { 4 System.out.println("29寸电视"); 5 } 6 7 }
下面是不同厂商,即继承生产厂商
1 public class ChangHong extends TelevisionMaker{ 2 3 public ChangHong(){ 4 System.out.println("长虹厂商"); 5 } 6 7 public void produce() { 8 System.out.println("长虹厂商"); 9 } 10 }
1 public class Haier extends TelevisionMaker{ 2 public Haier(){ 3 System.out.println("海尔厂商"); 4 } 5 6 public void produce() { 7 System.out.println("海尔厂商"); 8 } 9 10 }
这样就使用了桥模式,将原本繁杂的系统分离开来。如果根据需求变动,要增加电视机生产型号或者电视机生产厂商,只需要实现相对应的抽象类即可。
这样,我们也可以根据用户的需要,得到他所需要的电视机,如长虹厂商出厂的29寸电视机。
测试代码如下:
1 public class Client { 2 3 public static void main(String[] args) { 4 // TODO Auto-generated method stub 5 Inch29 i = new Inch29(); 6 i.teleview(new ChangHong()); 7 } 8 }
结果:
长虹厂商
29寸电视
标签:
原文地址:http://www.cnblogs.com/icooper/p/4553833.html