首页 > 代码库 > 大话设计模式_桥接模式(Java代码)

大话设计模式_桥接模式(Java代码)

合成/聚合复用原则:尽量使用合成/聚合,尽量不要使用类继承。

桥接模式:将抽象部分与它的实现部分分离,使它们都可以独立变化。

解释:即一个系统可以有多种分类实现,把没种分类独立出来,让他们可以独自变化,减少他们之间的耦合。

简单描述:1个Abstraction类,持有一个Implementor的引用,其方法中调用此Implementor引用的对应方法

大话设计模式中的截图:

代码例子:

Abstraction类:

 1 package com.longsheng.bridge;
 2 
 3 public class Abstraction {
 4 
 5     protected Implementor mImplementor;
 6     
 7     public void setImplementor(Implementor mImplementor) {
 8         this.mImplementor = mImplementor;
 9     }
10     
11     public void operation() {
12         mImplementor.operation();
13     }
14     
15 }

RefinedAbstraction类:

 1 package com.longsheng.bridge;
 2 
 3 public class RefinedAbstraction extends Abstraction {
 4 
 5     @Override
 6     public void operation() {
 7         super.operation();
 8     }
 9     
10 }

Implementor类:

1 package com.longsheng.bridge;
2 
3 public abstract class Implementor {
4 
5     public abstract void operation();
6     
7 }

ConcreteImplementorA类:

 1 package com.longsheng.bridge;
 2 
 3 public class ConcreteImplementorA extends Implementor {
 4 
 5     @Override
 6     public void operation() {
 7         System.out.println("具体实现A的执行");
 8     }
 9 
10 }

ConcreteImplementorB类:

 1 package com.longsheng.bridge;
 2 
 3 public class ConcreteImplementorB extends Implementor {
 4 
 5     @Override
 6     public void operation() {
 7         System.out.println("具体实现B的执行");
 8     }
 9 
10 }

客户端:

 1 package com.longsheng.bridge;
 2 
 3 public class Client {
 4 
 5     public static void main(String[] args) {
 6         Abstraction mAbstraction = new RefinedAbstraction();
 7         
 8         mAbstraction.setImplementor(new ConcreteImplementorA());
 9         mAbstraction.operation();
10         
11         mAbstraction.setImplementor(new ConcreteImplementorB());
12         mAbstraction.operation();
13     }
14 
15 }

运行结果:

1 具体实现A的执行
2 具体实现B的执行

这个模式的使用场景我还不是很清楚,书中举的例子是手机品牌和手机软件,这两者作为分类,UML图如下所示(具体代码就不写了):