桥梁模式:对象的结构模式,又称为柄体(Handle and Body)模式或者接口模式.
我们来看看jdon上关于它的解释
将抽象和行为划分开来,各自独立,但能动态的结合。 任何事物对象都有抽象和行为之分,例如人,人是一种抽象,人分男人和女人等;人有行为,行为也有各种具体表现,所以,“人”与“人的行为”两个概念也反映了抽象和行为之分。 在面向对象设计的基本概念中,对象这个概念实际是由属性和行为两个部分组成的,属性我们可以认为是一种静止的,是一种抽象,一般情况下,行为是包含在一个对象中,但是,在有的情况下,我们需要将这些行为也进行归类,形成一个总的行为接口,这就是桥模式的用处。
抽象化角色:
package com.javapatterns.bridge; abstract public class Abstraction { public void operation() { imp.operationImp(); } private Implementor imp; public Implementor getImp() { return imp; } public void setImp(Implementor imp) { this.imp = imp; } }
修正抽象化角色A:
package com.javapatterns.bridge; public class RefinedAbstractionA extends Abstraction { public void operation() { System.out.println("抽象的属性A:如大杯"); super.operation(); } }
修正抽象化角色B:
package com.javapatterns.bridge; public class RefinedAbstractionB extends Abstraction { public void operation() { System.out.println("抽象的属性A:如小杯"); super.operation(); } }
实现化角色:
package com.javapatterns.bridge; abstract public class Implementor { public abstract void operationImp(); }
具体是实现化角色1:
package com.javapatterns.bridge; public class ConcreteImplementorA extends Implementor { public void operationImp() { System.out.println("Do something A..."); } }
具体实现化角色2:
package com.javapatterns.bridge; public class ConcreteImplementorB extends Implementor { public void operationImp() { System.out.println("Do something B..."); } }
客户端:
package com.javapatterns.bridge; public class Client { public static void main(String[] args) { Abstraction ra = new RefinedAbstractionA(); //可以任意组合 Implementor conA = new ConcreteImplementorA(); ra.setImp(conA); ra.operation(); ra = new RefinedAbstractionB(); Implementor conB = new ConcreteImplementorB(); ra.setImp(conB); ra.operation(); } }
注意:修正抽象化角色可以是多个的,从而可以形成和具体实现化相互组合的情况。