程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> 信貸業務(Ali),信貸業務ali

信貸業務(Ali),信貸業務ali

編輯:JAVA綜合教程

信貸業務(Ali),信貸業務ali


1、信貸業務視角

  信貸業務主要有兩個視角,借款人和出資機構。借款人關心借多少錢,還多少錢,多少利息;機構關心信貸資產風險,收益。

  領域模型上兩個視角分開:個人--->賬單、機構--->資產。出資機構可以多樣化(機構對接)。多一個機構(多一種類型的對接)。賬單--機構資產--機構對接。借記賬務,貸記賬務,資產賬務,資信調查,信貸管理。

2、一達通·流水貸

  一達通·流水貸業務:面向使用一達通出口基礎服務的客戶,以出口額度積累授信額度的無抵押、免擔保、純信用貸款服務,該服務由**聯合多家銀行共同推出。下面流向圖是業務的基本流程。

3、代碼中減少if...else...的使用

在我們的代碼中有很多是基於類型的不同而有不同的處理邏輯,最典型的,不同枚舉類型的轉換:

public static CreditSource convertCreditSource(Short quotaSource) {
        if (quotaSource == null) {
            return null;
        }
        if (StringUtils.equals(QuotaSourceEnum.CMBSX.getValue(), quotaSource.toString())) {
            return CreditSource.bank_cmb;
        }
        if (StringUtils.equals(QuotaSourceEnum.SUNSHINESX.getValue(), quotaSource.toString())) {
            return CreditSource.ecreditbao_sun;
        }
        if (StringUtils.equals(QuotaSourceEnum.CMBCREDITLOANSX.getValue(), quotaSource.toString())) {
            return CreditSource.creditloan_cmb;
        }
        if (StringUtils.equals(QuotaSourceEnum.CREDITBUY_BUYERSX.getValue(), quotaSource.toString())) {
            return CreditSource.creditbuy_buyer;
        }
        if (StringUtil.equals(QuotaSourceEnum.CREDITBUY_SELLERSX.getValue(), quotaSource.toString())) {
            return CreditSource.creditbuy_seller;
        }
        return null;
    }

如果可以將這段代碼修改成如下方式,會不會看起來更簡潔一些?

    public static CreditSource convertCreditSource(Short quotaSource) {
        if (quotaSource == null) {
            return null;
        }
        return QuotaSourceEnum.parse(quotaSource.toString()).getCreditSource();
    }

要實現這種修改,即我們需要改造如下QuotaSourceEnum枚舉類:

    public enum QuotaSourceEnum {
        /** 保證金授信來源 **/
        BZJSX("1"),
        /** 即時到賬下的行業授信 **/
        INSTANT_HYSX("2"),
        /** 賬期交易下的行業授信 **/
        ZHANGQI_HYSX("3"),
        /** 關系授信 **/
        GXSX("4"),
        /** 協議授信 **/
        XYSX("5"),
        /** 招行授信 **/
        CMBSX("6"),
        /** 陽光授信 **/
        SUNSHINESX("7"),
        /** 招行貸款 **/
        CMBCREDITLOANSX("8"),
        /** 買家賒購買家授信 **/
        CREDITBUY_BUYERSX("9"),
        /** 買家賒購賣家授信 **/
        CREDITBUY_SELLERSX("10");

        String value;

        QuotaSourceEnum(String value){
            this.value = value;
        }

        public String getValue() {
            return value;
        }

        public void setValue(String value) {
            this.value = value;
        }

        public static QuotaSourceEnum parse(String value) {
            if (StringUtils.isBlank(value)) {
                return null;
            }
            for (QuotaSourceEnum quotaSource : QuotaSourceEnum.values()) {
                if (value.equals(quotaSource.value)) {
                    return quotaSource;
                }
            }
            return null;
        }
    }

修改成:

public enum QuotaSourceEnum {
    /** 保證金授信來源 **/
    BZJSX("1", null),
    /** 即時到賬下的行業授信 **/
    INSTANT_HYSX("2", null),
    /** 賬期交易下的行業授信 **/
    ZHANGQI_HYSX("3", null),
    /** 關系授信 **/
    GXSX("4", null),
    /** 協議授信 **/
    XYSX("5", null),
    /** 招行授信 **/
    CMBSX("6", CreditSource.bank_cmb),
    /** 陽光授信 **/
    SUNSHINESX("7", CreditSource.ecreditbao_sun),
    /** 招行貸款 **/
    CMBCREDITLOANSX("8", CreditSource.creditloan_cmb),
    /** 買家賒購買家授信 **/
    CREDITBUY_BUYERSX("9", CreditSource.creditbuy_buyer),
    /** 買家賒購賣家授信 **/
    CREDITBUY_SELLERSX("10", CreditSource.creditbuy_seller);
 
    final String value;
    final CreditSource creditSource;
 
    QuotaSourceEnum(String value, CreditSource creditSource){
        this.value = value;
        this.creditSource = creditSource;
    }
....
}

個人感覺使用Map的方式比這種if-else要簡潔一些。還有字符串的比較,統一使用:

StringUtils.equals(str1, str2);
StringUtils.equalsIgnoreCase(str1, str2);

4、枚舉類Enum中添加邏輯

  Enum中並不僅僅是一種枚舉類型,它其實是一種特殊的類。比如在《Effective Java》中推薦使用enum來實現單例模式。既然作為類,我們就可以向它內部添加邏輯,把和它相關的邏輯放在它的內部,而不是僅僅把它作為枚舉,然後在外部做if-else判斷。比如我們代碼中有如下的邏輯

5、

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved