标签:c style class blog code 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图如下所示(具体代码就不写了):
大话设计模式_桥接模式(Java代码),布布扣,bubuko.com
标签:c style class blog code java
原文地址:http://www.cnblogs.com/creasylai19/p/3776722.html