一:基本代码
package com.wzs.design;
/**
* 大话设计模式--page231 桥接模式(基本代码)
*
* @author Administrator
*
*/
public class BridgePattern {
public static void main(String[] args) {
Abstraction ab = new RefinedAbstraction();
ab.setImplementor(new ConcreteImplementorA());
ab.operation();
ab.setImplementor(new ConcreteImplementorB());
ab.operation();
}
}
// Implementor类
abstract class Implementor {
public abstract void operation();
}
// ConcreteImplementorA
class ConcreteImplementorA extends Implementor {
@Override
public void operation() {
System.out.println("具体方法A的实现.");
}
}
// ConcreteImplementorB
class ConcreteImplementorB extends Implementor {
@Override
public void operation() {
System.out.println("具体方法B的实现.");
}
}
class Abstraction {
protected Implementor implementor;
public void operation() {
implementor.operation();
}
public void setImplementor(Implementor implementor) {
this.implementor = implementor;
}
}
class RefinedAbstraction extends Abstraction {
@Override
public void operation() {
implementor.operation();
}
}二:以手机和手机游戏为例实现桥接模式
package com.wzs.three;
/**
* 大话设计模式--page231 桥接模式
*
* @author Administrator
*
*/
public class BridgePattern {
public static void main(String[] args) {
HandsetBrand ab = new HandsetBrandN();// 手机品牌N
ab.setSoft(new HandsetGame());
ab.run();
ab.setSoft(new HandsetAddressList());
ab.run();
ab = new HandsetBrandM();// 手机品牌M
ab.setSoft(new HandsetGame());
ab.run();
ab.setSoft(new HandsetAddressList());
ab.run();
}
}
/*
* 手机软件
*/
abstract class HandsetSoft {
public abstract void run();
}
/*
* 手机游戏
*/
class HandsetGame extends HandsetSoft {
@Override
public void run() {
System.out.println("运行手机游戏.");
}
}
/*
* 手机通讯录
*/
class HandsetAddressList extends HandsetSoft {
@Override
public void run() {
System.out.println("运行手机通讯录.");
}
}
/*
* 手机品牌
*/
abstract class HandsetBrand {
public HandsetSoft soft;
// 运行
public abstract void run();
// 设置手机软件
public void setSoft(HandsetSoft soft) {
this.soft = soft;
}
}
/*
* 手机品牌N
*/
class HandsetBrandN extends HandsetBrand {
@Override
public void run() {
soft.run();
}
}
/*
* 手机品牌M
*/
class HandsetBrandM extends HandsetBrand {
@Override
public void run() {
soft.run();
}
}
1559





