第0章:简介
桥接模式定义:将抽象部分与它的实现部分分离,使它们都可以独立地变化
桥接模式的实质:分离抽象与实现
参考:http://chjavach.iteye.com/blog/738056,研磨设计模式(书籍),大话设计模式(书籍)
模式图:
待补充第1章:实践
(1)实现部分的接口(Intf.java)
package com.mcc.core.designPattern.structure.bridge; /** * 实现部分的接口,与抽象部分的接口进行桥接 * * @author <a href="mailto:417877417@qq.com">menergy</a> * DateTime: 14-3-13 下午10:07 */ public interface Intf { public void someMethod(); } |
(2)实现部分的具体对象A(IntfImplA.java)
package com.mcc.core.designPattern.structure.bridge; /** * 实现部分的具体对象A * * @author <a href="mailto:417877417@qq.com">menergy</a> * DateTime: 14-3-13 下午10:10 */ public class IntfImplA implements Intf { @Override public void someMethod() { System.out.println("实现部分的具体对象A的方法"); } } |
(3)实现部分的具体对象B(IntfImplB.java)
package com.mcc.core.designPattern.structure.bridge; /** * 实现部分的具体对象B * * @author <a href="mailto:417877417@qq.com">menergy</a> * DateTime: 14-3-13 下午10:12 */ public class IntfImplB implements Intf { @Override public void someMethod() { System.out.println("实现部分的具体对象B的方法"); } } |
(4)抽象部分的接口(Abstraction.java)
package com.mcc.core.designPattern.structure.bridge; /** * 抽象部分的接口,与实现部分的接口进行桥接 * * 桥接模式的定义:将抽象部分与它的实现部分分离,使它们都可以独立地变化 * 桥接模式的本质:分离抽象与实现 * * @author <a href="mailto:417877417@qq.com">menergy</a> * DateTime: 14-3-13 下午10:17 */ public abstract class Abstraction { //持有实现部分的接口 protected Intf intf; /** * 构造器,传入实现部分的具体对象 * @param intf */ public Abstraction(Intf intf){ this.intf = intf; } /** * 实现一定功能,可能调用实现部分的具体对象方法 */ public void method(){ System.out.println("调用实现部分前的其它操作"); //调用实现部分的具体对象方法 intf.someMethod(); System.out.println("调用实现部分后的其它操作"); } } |
(5)抽象部分的具体实现对象A(AbstractionImplA.java)
package com.mcc.core.designPattern.structure.bridge; /** * 抽象部分的具体实现对象A * * @author <a href="mailto:417877417@qq.com">menergy</a> * DateTime: 14-3-13 下午10:31 */ public class AbstractionImplA extends Abstraction { /** * 构造器,传入实现部分的具体对象 * * @param intf */ public AbstractionImplA(Intf intf) { super(intf); } /** * 可复写该方法,加入其它逻辑,这里不加入 */ @Override public void method() { super.method(); } } |
(6)抽象部分的具体实现对象B(AbstractionImplB.java)
package com.mcc.core.designPattern.structure.bridge; /** * 抽象部分的具体实现对象B * * @author <a href="mailto:417877417@qq.com">menergy</a> * DateTime: 14-3-13 下午10:37 */ public class AbstractionImplB extends Abstraction { /** * 构造器,传入实现部分的具体对象 * * @param intf */ public AbstractionImplB(Intf intf) { super(intf); } /** * 可复写该方法,加入其它逻辑,这里不加逻辑 */ @Override public void method() { System.out.println("调用抽象部分默认方法前的操作"); //调用抽象部分的默认方法 super.method(); System.out.println("调用抽象部分默认方法前的操作"); } } |
(7)客户端测试(Client.java)
package com.mcc.core.designPattern.structure.bridge; /** * 客户端测试 * * @author <a href="mailto:417877417@qq.com">menergy</a> * DateTime: 14-3-13 下午10:40 */ public class Client { public static void main(String args[]){ //实现部分对象 Intf intfA = new IntfImplA(); Intf intfB = new IntfImplB(); System.out.println("\n抽象对象A桥接实现对象A:\n"); Abstraction abstractionAA = new AbstractionImplA(intfA); abstractionAA.method(); System.out.println("\n抽象对象A桥接实现对象B:\n"); Abstraction abstractionAB = new AbstractionImplA(intfB); abstractionAB.method(); System.out.println("\n抽象对象B桥接实现对象A:\n"); Abstraction abstractionBA = new AbstractionImplB(intfA); abstractionBA.method(); System.out.println("\n抽象对象B桥接实现对象B:\n"); Abstraction abstractionBB = new AbstractionImplB(intfB); abstractionBB.method(); } } |