一句话定义
将多维度进行分离,使能够独立的各自变化。如抽象和实现分离
使用场景
一个类存在多个需要扩展的的维度
实现要点
1.抽象类依赖实现
2.不同的子类、不同的实现类,分别实现扩展
情景假设
进行基金定投,投入金额可扩展,投的基金也是动态的,这里就可以使用桥接模式。
实现步骤
1.创建金额接口
/**
* 金额接口
*
* @author fengzhen
* @version 1.0, 2017/6/1
*/
public interface Money {
/**
* 获取金额
*/
String eachMoney();
}
2.创建具体金额实现类,实现基金接口。分别10元,50元。
/**
* 10元定投
*
* @author fengzhen
* @version 1.0, 2017/6/1
*/
public class TenMoneyImpl implements Money{
@Override
public String eachMoney() {
return "10元";
}
}
/**
* 50元定投
*
* @author fengzhen
* @version 1.0, 2017/6/1
*/
public class FiftyMoneyImpl implements Money{
@Override
public String eachMoney() {
return "50元";
}
}
3.创建定投基金抽象类,依赖金额接口
/**
* 基金抽象类
*
* @author fengzhen
* @version 1.0, 2017/6/1
*/
public abstract class Fund {
// 依赖接口
protected Money mMoney;
public Fund(Money mMoney) {
this.mMoney = mMoney;
}
/**
* 基本信息
*/
public abstract void info();
}
4.创建具体定投类,集成抽象基金类。国泰和汇丰两只基金
/**
* 国泰基金定投
*
* @author fengzhen
* @version 1.0, 2017/6/1
*/
public class GuoTaiFund extends Fund{
public GuoTaiFund(Money mMoney) {
super(mMoney);
}
@Override
public void info() {
Log.i("info", "info: ==++ 国泰基金定投" + mMoney.eachMoney());
}
}
/**
* 汇丰基金定投
*
* @author fengzhen
* @version 1.0, 2017/6/1
*/
public class HuiFengFund extends Fund {
public HuiFengFund(Money mMoney) {
super(mMoney);
}
@Override
public void info() {
Log.i("info", "info: ==++ 汇丰基金定投" + mMoney.eachMoney());
}
}
5.动态配置基金
// 创建具体的金额
TenMoneyImpl tenMoney = new TenMoneyImpl();
FiftyMoneyImpl fiftyMoney = new FiftyMoneyImpl();
// 创建不同的定投基金
GuoTaiFund guoTaiFund = new GuoTaiFund(tenMoney);
HuiFengFund huiFengFund = new HuiFengFund(fiftyMoney);
// 打印基本信息
guoTaiFund.info();
huiFengFund.info();
如此,将不同维度的价格和种类分离,能够各自单独进行扩展。