代理模式 - 老赖大战催收案例

小王是一个普通公司职员实习生,收入平平却又爱攀比。

最近爱疯(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.总结

代理模式,没什么好总结的。

倒是给尚未踏入社会的年轻人(虽然我也是年轻人....)一些忠告:我不反对网贷,但请认清自己的还款能力。

猜你喜欢

转载自www.cnblogs.com/zh1996/p/10354680.html