以前百度空间写的全没了,全部重写一遍
【GOF95】在提出桥梁模式的时候指出,桥梁模式的用意是"将抽象化(Abstraction)与实现化(Implementation)脱耦,使得二者可以独立地变化"。这句话有三个关键词,也就是抽象化、实现化和脱耦。
桥接模式(Bridge):将抽象部分与它的实现部分分离,使它们都可以独立地变化。
package ding.study.designpatterns.bridge;
/**
* 手机软件接口
*
* @author daniel
* @email 576699909@qq.com
* @time 2016-5-26 上午11:45:16
*/
public interface PhoneSoft {
public void run();
}
package ding.study.designpatterns.bridge;
/**
* 手机软件-通讯录
* @author daniel
* @email 576699909@qq.com
* @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 576699909@qq.com
* @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 576699909@qq.com
* @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 576699909@qq.com
* @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 576699909@qq.com
* @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