您的位置:首页 > 编程语言 > Java开发

Java设计模式——桥接模式

2015-11-04 17:15 417 查看
桥接模式是一种结构型模式,它主要应对的是:由于实际的需要,某个类具有两个或两个以上的维度变化,如果只是用继承将无法实现这种需要,或者使得设计变得相当臃肿。

桥接模式的做法是把变化部分抽象出来,使变化部分与主类分离开来,从而将多个维度的变化彻底分离。最后,提供一个管理类来组合不同维度上的变化,通过这种组合来满足业务的需要。

举个例子,对于笔记本的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://www.cnblogs.com/draem0507/p/3794530.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: