桥接模式

来源:互联网 发布:淘宝差评时间 编辑:程序博客网 时间:2024/06/16 10:12

一句话定义

将多维度进行分离,使能够独立的各自变化。如抽象和实现分离

使用场景

一个类存在多个需要扩展的的维度

实现要点

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();

如此,将不同维度的价格和种类分离,能够各自单独进行扩展。

原创粉丝点击