桥模式

桥模式:将某个问题抽象的不同形式分别与该问题的具体实现部分相分离,使他们都可以独立变化,并能够动态结合。类图如下:

      例如电视厂商海尔,长虹生产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寸电视

posted @ 2015-06-05 09:43  黑桃七  阅读(340)  评论(0编辑  收藏  举报