由Martin Flower提出把IoC命名为Dependency Injection(依赖注入)模式的2004年初开始,就开始倍受关注。我们先不管名称上的变化,实际上它解决的解决方案还是一个“解耦”的老问题,灵活性和可扩展性是一个永远的话题。IoC把接口和实现解耦,实现可配置。这里不再对IoC的各种方式的注入方式展开了,具体的可以参看Martin Flower的《Inversion of Control Containers and the Dependency Injection pattern》。
AOP(Aspect Oriented Programming,译为“面向方面编程”),这里最主要是要理解什么是“方面”(Aspect),根据我的理解,所谓“方面”就是一个功能点,比如日志处理功能,事务处理功能,安全认证功能等等;这稍微有别与“服务”,相对而言 “方面”是与业务逻辑不太相关的,而“服务”则不做这种区分。这样“方面”从逻辑从剥离出来,“方面”就可以在一处编写,到处被引用,提高了代码的复用性;同样在程序的开发过程中使业务逻辑实现者不用关注“方面”这部分所要实现的非逻辑代码;同样也提高了“方面”的可扩展性,加入AOP,实现可配置,修改