小王是一个普通公司职员实习生,收入平平却又爱攀比。
最近爱疯(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.总结
代理模式,没什么好总结的。
倒是给尚未踏入社会的年轻人(虽然我也是年轻人....)一些忠告:我不反对网贷,但请认清自己的还款能力。