《JAVA與模式》之橋接模式


  橋接模式是一種結構型模式,它主要應對的是:由於實際的需要,某個類具有兩個或兩個以上的維度變化,如果只是用繼承將無法實現這種需要,或者使得設計變得相當臃腫。

      橋接模式的做法是把變化部分抽象出來,使變化部分與主類分離開來,從而將多個維度的變化徹底分離。最后,提供一個管理類來組合不同維度上的變化,通過這種組合來滿足業務的需要。

舉個例子,對於筆記本的CPU評測,當安裝Intel CPU的時候 評測分數比較高,而安裝AMD CPU的時候,則評測分數相對低一些,這個是一唯影響,而配合上電腦品牌,就是二維影響

先看下面的代碼

 1 interface CpuAbility{
 2     
 3      String abilityCpu();
 4 }
 5 
 6 class AdmCpu implements CpuAbility{
 7 
 8     public String abilityCpu() {
 9         // TODO Auto-generated method stub
10         return "系能一般";
11     }
12 }
13 class IntelCpu implements CpuAbility{
14     public String abilityCpu() {
15         // TODO Auto-generated method stub
16         return "系能比較牛";
17     }
18 }
19 
20 abstract class AbstractComputer{
21     
22     CpuAbility cpuAbility;
23     
24     public AbstractComputer(CpuAbility cpuAbility){
25         this.cpuAbility=cpuAbility;
26         
27     }
28     
29     
30     public abstract void checkPcAbility();
31     
32 }
33 
34 class LenevoComputer extends AbstractComputer{
35 
36     public LenevoComputer(CpuAbility cpuAbility) {
37         super(cpuAbility);
38         // TODO Auto-generated constructor stub
39     }
40 
41     @Override
42     public void checkPcAbility() {
43         System.out.println("華碩筆記本CPU性能"+super.cpuAbility.abilityCpu());
44     }
45     
46 }
47 class IswComputer extends AbstractComputer{
48     
49     public IswComputer(CpuAbility cpuAbility) {
50         super(cpuAbility);
51         // TODO Auto-generated constructor stub
52     }
53     
54     @Override
55     public void checkPcAbility() {
56         System.out.println("IBM筆記本CPU性能"+super.cpuAbility.abilityCpu());
57     }
58     
59 }

執行代碼並輸出

1 CpuAbility ability =new IntelCpu();
2 AbstractComputer computer =new LenevoComputer(ability);
3 computer.checkPcAbility();
4 ability =new AdmCpu();//華碩筆記本CPU性能系能比較牛
5 computer =new IswComputer(ability);
6 computer.checkPcAbility();//IBM筆記本CPU性能系能一般

可以看到,通過對象組合的方式,Bridge 模式把兩個角色之間的繼承關系改為了耦合的關系,從而使這兩者可以從容自若的各自獨立的變化,這也是Bridge模式的本意。

Bridge模式是構造型的設計模式之一。Bridge模式基於類的最小設計原則,通過使用封裝,聚合以及繼承等行為來讓不同的類承擔不同的責任。它的主要特點是把抽象(abstraction)與行為實現(implementation)分離開來,從而可以保持各部分的獨立性以及應對它們的功能擴展。

結構如下圖所示:

參考地址:

http://blog.csdn.net/jason0539/article/details/22568865

http://hi.baidu.com/isswangqing/item/126e4318bd99a708e65c36b3

http://blog.163.com/xiaokangzhijia@126/blog/static/1659548562010111843618596/

http://www.blogjava.net/wangle/archive/2007/04/25/113545.html

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM