java设计模式----桥接模式 weir 2015-04-19 13:59:08.0 java,设计模式 1405 桥接模式 《研磨设计模式》上面说 是分离抽象和实现 设计模式》GOF上说 将抽象部分与实现部分分离,使它们都可以独立的变化。 我在想 什么是抽象部分 什么是实现部分呢,如果要理解这些问题,分析起来说不定能聊到哲学问题上,换句话说编程世界其实也是人类的认知世界,而人类的认知世界归根到底不就是哲学问题么,所以说呀像这样的类似问题没必要深究它,因为哲学问题永远不会统一(这就是哲学)(说实话 我也不理解 哈哈哈) 我这里举个例子来解释这一概念:就拿学生择校的问题。学生 可分不同等级(就成绩而言),学校也可以分不同等级(教学质量,行政区域等等),怎么分我们不管但是有一个目的是统一的:学生要选择学校,学校要招收学生。还不如 :路有高速路和城市道路 乡村道路,车有小车 火车 共公汽车等等。还比如发消息有多种形式(站内 邮件 qq 微信等等),发送发式也有多种形式(普通,加急,重要等等),想想要有什么情况是这样的,应该有很多吧,我暂时没想好(其实我都是看网上人家说的,偷笑) 我们稍微模拟一下 据说这是结构示意图 package com.weir.bridge; /** * 实现的接口 * @author Administrator * */ public interface Implementor { public void getImpl(); } package com.weir.bridge; public class AImpl implements Implementor{ @Override public void getImpl() { System.out.println("Aimpl"); } } package com.weir.bridge; public class BImpl implements Implementor{ @Override public void getImpl() { System.out.println("Bimpl"); } } package com.weir.bridge; /** * 抽象对象,而且带有一个实现对象 * @author Administrator * */ public abstract class Abstraction { protected Implementor impl; public Abstraction(Implementor impl) { this.impl=impl; } public void operation() { this.impl.getImpl(); } } package com.weir.bridge; public class A1Abstraction extends Abstraction{ public A1Abstraction(Implementor impl) { super(impl); } public void operation() { super.operation(); System.out.println("A1Abstraction"); } } package com.weir.bridge; public class A2Abstraction extends Abstraction{ public A2Abstraction(Implementor impl) { super(impl); } public void operation() { super.operation(); System.out.println("A2Abstraction"); } public void a2() { System.out.println("A2"); } } package com.weir.bridge; public class Client { public static void main(String[] args) { Implementor impl = new AImpl(); Abstraction a = new A1Abstraction(impl); a.operation(); a = new A2Abstraction(impl); a.operation(); /////////////////////////////////// impl = new BImpl(); a = new A1Abstraction(impl); a.operation(); //////////////////////////////// impl = new BImpl(); a = new A2Abstraction(impl); a.operation(); } } 看出什么了么。 一个接口类 一个带有接口类的抽象类 多个实现接口的实现类 多个继承了抽象类的实现类 难道这就是所谓的抽象和实现的分离么。我想吐血!!!!!!!