以前百度空间写的全没了,全部重写一遍
【GOF95】在提出桥梁模式的时候指出,桥梁模式的用意是"将抽象化(Abstraction)与实现化(Implementation)脱耦,使得二者可以独立地变化"。这句话有三个关键词,也就是抽象化、实现化和脱耦。
桥接模式(Bridge):将抽象部分与它的实现部分分离,使它们都可以独立地变化。
package ding.study.designpatterns.bridge; /** * 手机软件接口 * * @author daniel * @email [email protected] * @time 2016-5-26 上午11:45:16 */ public interface PhoneSoft { public void run(); }
package ding.study.designpatterns.bridge; /** * 手机软件-通讯录 * @author daniel * @email [email protected] * @time 2016-5-26 上午11:47:12 */ public class PhoneSoftAddressList implements PhoneSoft { @Override public void run() { System.out.println(" 运行手机通讯录软件"); } }
package ding.study.designpatterns.bridge; /** * 手机软件实现类-打游戏 * @author daniel * @email [email protected] * @time 2016-5-26 上午11:46:17 */ public class PhoneSoftGame implements PhoneSoft { @Override public void run() { System.out.println(" 运行手机游戏软件"); } }
package ding.study.designpatterns.bridge; /** * 手机品牌抽象类 * @author daniel * @email [email protected] * @time 2016-5-26 上午11:52:09 */ public abstract class PhoneBrand { /** * 手机软件 */ protected PhoneSoft phoneSoft ; public void setPhoneSoft(PhoneSoft phoneSoft){ this.phoneSoft=phoneSoft; } /** * 运行软件 * @author daniel * @time 2016-5-26 上午11:52:03 */ public abstract void run(); }
package ding.study.designpatterns.bridge; /** * iphone4手机品牌 * @author daniel * @email [email protected] * @time 2016-5-26 下午12:46:49 */ public class PhoneBrandIphone4 extends PhoneBrand { @Override public void run() { System.out.println("Iphone4运行"); this.phoneSoft.run(); } }
package ding.study.designpatterns.bridge; /** * phone5手机品牌 * @author daniel * @email [email protected] * @time 2016-5-26 下午12:47:00 */ public class PhoneBrandIphone5 extends PhoneBrand { @Override public void run() { System.out.println("Iphone5运行"); this.phoneSoft.run(); } }
package ding.study.designpatterns.bridge; public class Zmain { /** * 【GOF95】在提出桥梁模式的时候指出,桥梁模式的用意是"将抽象化(Abstraction)与实现化(Implementation)脱耦,使得二者可以独立地变化"。这句话有三个关键词,也就是抽象化、实现化和脱耦。 * 桥接模式(Bridge):将抽象部分与它的实现部分分离,使它们都可以独立地变化。 * @author daniel * @time 2016-5-26 下午12:42:52 * @param args */ public static void main(String[] args) { PhoneBrandIphone5 i5 = new PhoneBrandIphone5(); i5.setPhoneSoft(new PhoneSoftGame()); i5.run(); i5.setPhoneSoft(new PhoneSoftAddressList()); i5.run(); PhoneBrandIphone4 i4 = new PhoneBrandIphone4(); i4.setPhoneSoft(new PhoneSoftGame()); i4.run(); i4.setPhoneSoft(new PhoneSoftAddressList()); i4.run(); } }
源码:https://github.com/dingsai88/StudyTest/tree/master/src/ding/study/designpatterns/bridge