为什么要用代理模式?

因为常见的业务都需要加上一些公共的业务,Spring把公共业务称为关注点,关注点常见的有日志,安全,权限,缓存,事物等。因为公共业务会经常使用,所以就提取出来,放在一个公共的方法里面。代码就可以复用了。但是公共业务可能会实现比较复杂的操作,而且整个程序都可能会调用公共业务,所以就可以把公共业务提出变成一个类,通过类来调用公共业务。但是通过类来调用代码,也会需要一行去调用的代码。比如A.log()。这一行代码本身和业务是没有关系的。这一行代码就会使得业务不是很纯粹,设计模式中也提过单一职责原则,那这个类除了处理本身的业务以外,还有添加公共业务的作用。而且也产生了依赖关系。


为什么要用动态代理?

虽然把公共业务提出来作为一个单独的类,可以让业务更加纯粹,然后在增加一个代理类,添加公共业就在代练类里面添加会很方便。可是如果业务多了,每个业务都有可能添加公共业务,那么每个业务都需要一个代理类,就会造成类过多。而动态代理就是为了解决这个问题出现的。动态代理可以代理所有的类。动态代理通过proxy生产代理实理。然后通过代理实例去调用真实对象的时候,会调用代理实例的invoke方法去建立真实对象和代理实例的联系。


什么是领域业务(领域模型)?

现在软件开发已经分得很清楚了,不同的领域设计的业务都不一样,但是同一个领域都会有一些共同的业务。我们把这部分共同的业务抽出来,就成了领域模型。比如在支付领域。无论是支付宝,或者微信,或者其他支付方式。它的过程基本都是固定的:
接入第三方接口——安全验证——身份验证——余额验证——支付。
这个过程就可以抽出来,就是一个领域业务了。


什么是AOP?

aop的作用就是在不改变原有代码的基础上,新添加功能,像是横切进去一样,所以叫面向切面编程。aop实际上也是通过动态代理来实现的。spring提供了一个动态代理的框架,使得编写代码更方便。

12-26 00:24