天天看點

代理模式 - 老賴大戰催收案例

小王是一個普通公司職員實習生,收入平平卻又愛攀比。

最近愛瘋(iPhone)8又上市了,小王虛榮心泛濫,想搞一個腎8。

沒錢怎麼辦呢?

小王上網了解到了一個貸款平台,小王很快在這個平台上貸到了8000塊錢,

美滋滋的買了腎8,在朋友面前神氣的很....

可是好景不長,還款日到了!!!

鑒于小王長時間不歸還,貸款公司将收款業務委托給一家外包催收公司。

1.服務接口IService

服務接口沒啥好說的,裡面就是一個方法,要錢collect()。

貸款公司要錢,要不到交給催收公司,

催收公司接着要。

老賴也需要面對,各路人馬要錢collect()時,在collect()方法種,說明自己的情況。

是以,貸款公司、催收公司、老賴都要繼承這個接口。

/**
 * @author 部落格園-刷書小将
 *
 */
public interface IService {
    //催收
    public void collect();
    
}      

2.貸款公司Company登場

public class Company implements IService {

    @Override
    public void collect() {
        // TODO Auto-generated method stub
        System.out.println("貸款公司:面對老賴,我要将業務交給催收公司");
        
        System.out.println("------------------------------------");
        
        //定義催收公司
        CollectCompany collectCompany = new CollectCompany();
        
        //催收公司要錢
        collectCompany.collect();
    }

}      

其實貸款公司,就是委托人。

當有人逾期時,就将要錢的工作collect(),但是貸款公司軟磨硬泡,老賴就是不還錢,貸款公司最終交給催收公司(代理)來處理。

3.催收公司CollectCompany登場

public class CollectCompany implements IService {

    private IService user;

    public CollectCompany() {
        //催收公司(代理)找到催收對象....
        this.user = new User();//此處應該是已經确定好的對象,代理的對象是不能改變的,此處有别于裝飾模式
    }

    @Override
    public void collect() {
        // TODO Auto-generated method stub
        
        System.out.println("催收公司員工:我收到了使用者的回報:");
        
        user.collect();//了解老賴回報
        
        System.out.println("------------------------------------");
        
        System.out.println("催收公司:先将消息傳到給委托人貸款公司.....");
        System.out.println("催收公司:然後再給逾期使用者下達最後通緝令");
        
        System.out.println("------------------------------------");
        
        //催收公司給逾期使用者下通緝令...
        System.out.println("我是xxx催收公司,");
        System.out.println("受xxx貸款公司委托,");
        System.out.println("請于今天xxx點前立刻還款,逾時我們将登門拜訪");
    }

}      

催收公司,也就是代理。

重要的一步,它要了解到老賴為何逾期。也就是代理對象user的collect()方法。

然後催收公司可以做其他的業務,例如

1,向委托人(貸款公司)報告老賴逾期的原因

2,恐吓老賴,繼續催收要錢collect()。。

看到這裡,這個催收公司,是不是就是一個,明顯的代理?

4.老賴User登場

public class User implements IService {

    @Override
    public void collect() {
        // TODO Auto-generated method stub
        System.out.println("我是使用者,我沒錢還款了");
    }

}      

5.實作

public class Main {

    public static void main(String[] args) {
        // TODO Auto-generated method stub

        //定義貸款公司,并要錢
        Company company = new Company();
        company.collect();
    }

}      

運作截圖如下:

代理模式 - 老賴大戰催收案例

6.與裝飾模式比較

我之前,寫了一篇部落格:裝飾模式 - 女屌絲逆襲白富美案例

裝飾模式看似與代理模式挺類似的,具體差異在哪呢?

在對象。

裝飾模式,每裝飾一次,就會産生一個新的不同的對象。

代理模式,是對某一指定對象,進行代理,而不會改變此對象,當然,也不會産生新的對象。

7.總結

代理模式,沒什麼好總結的。

倒是給尚未踏入社會的年輕人(雖然我也是年輕人....)一些忠告:我不反對網貸,但請認清自己的還款能力。