设计模式——Builder 模式

来源:互联网 发布:菜谱制作软件 编辑:程序博客网 时间:2024/06/06 04:31

我的总结:

       Builder 模式为创建某个实体类,该实体类有过多属性需要配置,用Builder模式可以流式调用,也可以默认赋值,一下代码为项目中实际代码应用。

       PayConfig类中有内部类Builder,Builder中有PayConfig的属性,Builder内部类中每个赋值方法返回Builder自己,Builder内部类中有个builder方法,最终通过PayConfig的private构造函数创建PayConfig实体类

public class PayConfig {    private List<String> payWayList;    private String frontEndUrl;    private String weChatAppId;    private String weChatOrderSignUrl;    private String aliSignUrl;    /**     * 银联支付环境,"00" 正式环境 "01" 测试环境     */    private String upPayMode;    /**     * 银联订单获取url     */    private String upOrderSignUrl;    private String paySuccessBtnStr;    private String payFailBtnStr;    private PaySuccessCallBack paySuccessCallBack;    private PayConfig(List<String> payWayList, String weChatAppId, String weChatOrderSignUrl, String aliSignUrl, String upPayMode, String upOrderSignUrl, String frontEndUrl,  String paySuccessBtnStr, String payFailBtnStr, PaySuccessCallBack paySuccessCallBack) {        this.payWayList = payWayList;        this.weChatAppId = weChatAppId;        this.weChatOrderSignUrl = weChatOrderSignUrl;        this.aliSignUrl = aliSignUrl;        this.upPayMode = upPayMode;        this.upOrderSignUrl = upOrderSignUrl;        this.frontEndUrl = frontEndUrl;        this.paySuccessBtnStr = paySuccessBtnStr;        this.payFailBtnStr = payFailBtnStr;        this.paySuccessCallBack = paySuccessCallBack;    }    public static class Builder{        private List<String> payWayList;        private String frontEndUrl;        private String weChatAppId;        private String weChatOrderSignUrl;        private String aliSignUrl;        /**         * 银联支付环境,"00" 正式环境 "01" 测试环境         */        private String upPayMode;        /**         * 银联订单获取url         */        private String upOrderSignUrl;        private String paySuccessBtnStr;        private String payFailBtnStr;        private PaySuccessCallBack paySuccessCallBack;        public Builder setupPayWay(List<String> payWayList){            this.payWayList = payWayList;            return this;        }        public Builder setupWechatPay(String weChatAppId, String weChatOrderSignUrl){            this.weChatAppId = weChatAppId;            this.weChatOrderSignUrl = weChatOrderSignUrl;            return this;        }        public Builder setupAliPay(String aliSignUrl){            this.aliSignUrl = aliSignUrl;            return this;        }        public Builder setupUpPay(String upPayMode, String upOrderSignUrl){            this.upPayMode = upPayMode;            this.upOrderSignUrl = upOrderSignUrl;            return this;        }        public Builder setupPayButton(String paySuccessBtnStr, String payFailBtnStr, PaySuccessCallBack paySuccessCallBack){            this.paySuccessBtnStr = paySuccessBtnStr;            this.payFailBtnStr = payFailBtnStr;            this.paySuccessCallBack = paySuccessCallBack;            return this;        }        public Builder setuprontEndUrl(String frontEndUrl){            this.frontEndUrl = frontEndUrl;            return this;        }        private void paramCheck(){            if (null == payWayList || payWayList.size() == 0){                payWayList = new ArrayList<>();                payWayList.add(PayConstans.PAYWAY_WECHAT);                payWayList.add(PayConstans.PAYWAY_ALI);                payWayList.add(PayConstans.PAYWAY_UP);            }            if (TextUtils.isEmpty(weChatAppId))                weChatAppId = PayConstans.WECHAT_ID;            if (TextUtils.isEmpty(weChatOrderSignUrl))                weChatOrderSignUrl = PayConstans.PAY_ORDER_URL;            if (TextUtils.isEmpty(aliSignUrl))                aliSignUrl = PayConstans.PAY_ORDER_URL;            if (TextUtils.isEmpty(upPayMode))                upPayMode = PayConstans.UP_PAY_MODE;            if (TextUtils.isEmpty(upOrderSignUrl))                upOrderSignUrl = PayConstans.PAY_ORDER_URL;            if (TextUtils.isEmpty(paySuccessBtnStr))                paySuccessBtnStr = "支付完成";            if (TextUtils.isEmpty(payFailBtnStr))                payFailBtnStr = "再次支付";            if (TextUtils.isEmpty(frontEndUrl))                frontEndUrl = PayConstans.FRONT_END_URL;        }        public PayConfig builder(){            paramCheck();            PayConfig payConfig = new PayConfig(payWayList,weChatAppId,weChatOrderSignUrl,aliSignUrl            ,upPayMode,upOrderSignUrl,frontEndUrl,paySuccessBtnStr,payFailBtnStr,paySuccessCallBack);            return payConfig;        }    }    public PaySuccessCallBack getPaySuccessCallBack() {        return paySuccessCallBack;    }    public void setPaySuccessCallBack(PaySuccessCallBack paySuccessCallBack) {        this.paySuccessCallBack = paySuccessCallBack;    }    public String getPaySuccessBtnStr() {        return paySuccessBtnStr;    }    public void setPaySuccessBtnStr(String paySuccessBtnStr) {        this.paySuccessBtnStr = paySuccessBtnStr;    }    public String getPayFailBtnStr() {        return payFailBtnStr;    }    public void setPayFailBtnStr(String payFailBtnStr) {        this.payFailBtnStr = payFailBtnStr;    }    public String getFrontEndUrl() {        return frontEndUrl;    }    public void setFrontEndUrl(String frontEndUrl) {        this.frontEndUrl = frontEndUrl;    }    public String getWeChatAppId() {        return weChatAppId;    }    public void setWeChatAppId(String weChatAppId) {        this.weChatAppId = weChatAppId;    }    public String getWeChatOrderSignUrl() {        return weChatOrderSignUrl;    }    public void setWeChatOrderSignUrl(String weChatOrderSignUrl) {        this.weChatOrderSignUrl = weChatOrderSignUrl;    }    public String getAliSignUrl() {        return aliSignUrl;    }    public void setAliSignUrl(String aliSignUrl) {        this.aliSignUrl = aliSignUrl;    }    public String getUpPayMode() {        return upPayMode;    }    public void setUpPayMode(String upPayMode) {        this.upPayMode = upPayMode;    }    public String getUpOrderSignUrl() {        return upOrderSignUrl;    }    public void setUpOrderSignUrl(String upOrderSignUrl) {        this.upOrderSignUrl = upOrderSignUrl;    }    public List<String> getPayWayList() {        return payWayList;    }    public void setPayWayList(List<String> payWayList) {        this.payWayList = payWayList;    }}