代理是什么?
- 三个类: 委托类(被代理类)、代理类、客户类
举个例子,现在有厂家、微商代理、买家三个对象,买家在代理商买东西,微商代理从厂家进货,厂家可以有多个代理商,这些代理商面向不同的用户群体(比如微商代理提供给微信用户),从而可以向特定的群体销售特定的物品,而厂家只管生产即可,提高了工作效率。在这里委托类就是厂家,代理类就是微商代理,而客户类就是买家。
代理的优点?
优点一:可以隐藏委托类的实现;
优点二:可以实现客户与委托类间的解耦,在不修改委托类代码的情况下能够做一些额外的处理。
因此代理模式可以提高系统各个模块的工作效率,各自做自己擅长做的事情。
对架构的思考
每次聊到架构,都要想想现在做的这个业务,它的核心生命周期是什么?
就上文举得例子而言,它的核心生命周期就是把厂家生产的商品销售出去,这里的主体是厂家。想一想,如果让厂家做所有的事情:生产、寻找用户群体、销售,那么厂家可能会花大量的心思去关心商品的销售过程(推广、寻找买家、甚至和买家讨价还价orz等等),这样厂家就没有办法专注自己的本分工作——生产。
一个人做所有的事,这样的架构固然是不好的,因为它会产生严重的耦合。
何不让擅长的人做擅长的事呢?
分工:
- 厂家只顾生产
- 代理商只顾销售
- 用户只顾可以买到商品
为了在相等的时间内做更多的事,厂家把销售任务委托给代理商,而买家无需关心代理商是从哪里获取商品的。此时代理商可以做更多的事:筛选用户群体(绝对不会在网吧里卖口红)、记录用户购买历史等等。