桥接模式
桥接模式:将抽象部分与它的实现部分分离,使它们都可以独立地变化。
抽象与实现分离并不是说让抽象类与其派生类分离。实现值得是抽象类和它的派生类用来实现自己的对象。实现系统可能有多角度分类,每一种分类都有可能变化,那么久吧这种多角度分离出来让他们独立变化,减少他们之间的耦合。
1 //Implementor类 2 public abstract class Implementor { 3 public abstract void operation(); 4 }
1 //ConcreteImplementorA派生类 2 public class ConcreteImplementorA extends Implementor { 3 4 @Override 5 public void operation() { 6 // TODO Auto-generated method stub 7 System.out.println("具体实现A的方法执行"); 8 } 9 10 }
1 //ConcreteImplementorB派生类 2 public class ConcreteImplementorB extends Implementor { 3 4 @Override 5 public void operation() { 6 // TODO Auto-generated method stub 7 System.out.println("具体实现B的方法执行"); 8 } 9 10 }
1 //Abstraction类 2 public class Abstraction { 3 //聚合 4 protected Implementor implementor; 5 6 public void setImplementor(Implementor implementor) { 7 this.implementor = implementor; 8 } 9 10 public void operation(){ 11 implementor.operation();//使用Implementor中的方法 12 } 13 14 }
1 //RefinedAbstraction类 2 public class RefinedAbstraction extends Abstraction { 3 4 @Override 5 public void operation() { 6 implementor.operation(); 7 } 8 }
客户端测试类:
1 public class TestClient { 2 public static void main(String[] args) { 3 Abstraction ab = new RefinedAbstraction(); 4 ab.setImplementor(new ConcreteImplementorA()); 5 ab.operation();//具体实现A的方法执行 6 7 ab.setImplementor(new ConcreteImplementorB()); 8 ab.operation();//具体实现B的方法执行 9 } 10 }
UML图:
不能只满足于写完代码运行结果正确就完事,时常考虑如何让代码更加简练更加容易维护、容易扩展和复用,只有这样才可以真正得到提高
--《来自大话设计模式》