提出问题

如何开发系统才能使代码更整洁???

解决问题

1)系统的构造与使用分开;好像建设大楼时,构建大楼的吊车、铲车之类的东西,在大楼投入使用时已经完全不存在一样;软件系统应该讲启动过程和启动过程之后的运行时逻辑分开,在启动过程中创建应用对象,也会存在相互的依赖。 

2)系统的构造与使用分开解决方法:

分解main:将系统中的全部构造过程搬迁到main或者main模块中:main函数创建对象,再将对象传递给应用,应用直接使用;(Java应用程序必须从main()方法开始运行)

工厂:可以让应用控制实体创建的时机

依赖注入
例如在Spring MVC中:

  1. @Rest(DeView.class)
  2. public class ViewController {
  3. //这些service都是通过依赖注入的,我们并不会自己去new出来
  4. //而是把new对象任务交给spring去做,而spring是在启动程序的时候就
  5. //初始化这些service的,既达到构造与使用分开
  6. @Autowired
  7. private IViewService viewService;
  8. @Autowired
  9. private IResourceOperationService resourceOperationService;
  10. @Autowired
  11. private IEditUnitService editUnitService;
  12. @Autowired

3)扩容:我们不可能一开始就把系统做对,实现好当前客户的需求,然后重构,扩容来实现新的客户需求。 软件系统与物理系统可以类比。他们的架构都可以递增式增长,只要我们持续将关注面恰当的切分。

4)AOP,面向方面编程。Java中三种方面和类似方面的机制:代理,纯AOP框架,AspectJ

Java代理:Proxy.newInstance(被代理接口,InvocationHandler h)方法执行后,被代理类的所有方法都会被加上Handler的处理逻辑,这是简单的AOP,但是太复杂;(这里就是JDK提供的动态代理)

纯AOP框架:Spring AOP(需进一步了解)

AspectJ语言(自行了解)

总结:这里讨论的几点,都是希望我们在软件开发过程中,记住这几方面的实现,让开发代码更整洁。