优雅编程之这样处理系统,你就“正常”了

来源:互联网 发布:微信营销系统源码 编辑:程序博客网 时间:2024/04/28 02:43

开心一笑

【一个国王要替公主征婚,把一个苹果放在公主头上,谁要把它射中就有机会迎娶公主。
第一个男士把苹果射中,他说:“I’m 罗宾。”
第二个男士也把苹果射中,他说:“I’m 后羿。”
第三个男士不小心把公主射死了,他说:“ I’m sorry…” 】

提出问题

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

解决问题

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

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

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

这里写图片描述

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

这里写图片描述

  • 依赖注入
    例如在Spring MVC中:

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

    }

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

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

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

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

  • AspectJ语言(自行了解)

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

读书感悟

来自《活出生命意义》

  • 突然间,我一生中第一次领悟到一个真理,它曾被诗人赞颂,被思想家视为绝顶智慧。这就是:爱是人类终身追求的最高目标。我理解了诗歌、思想和信仰所传达的伟大秘密的真正含义:拯救人类要通过爱与被爱。我知道世界上一无所有的人只要有片刻的时间思念爱人,那么他就可以领悟幸福的真谛。在荒凉的环境中,人们不能畅所欲言,唯一正确的做法就是忍受痛苦,以一种令人尊敬的方式去忍受,在这种处境中的人们也可以通过回忆爱人的形象获得满足。我生平第一次理解这句话“天使存在于无比美丽的永恒思念中”。

  • 如果说生命有意义,那么遭受苦难也有意义。苦难、厄运和死亡是生活不可剥离的组成部分。没有苦难和死亡,人的生命就不完整。

  • 人对意义的追寻会导致内心的紧张而非平衡。不过,这张紧张恰恰是精神健康的必要前提。我敢说,世界上再没有别的能比知道自己的生活有意义更能有效地帮助人活下去(哪怕是在最恶劣的环境下)。尼采的一句话很有智慧:“知道为什么而活的人,便能生存。”

  • 必须直面所有的苦难,不能软弱,眼泪是无用的,但也不必讳言流泪,因为眼泪见证了人们承受痛苦的巨大勇气。

  • 我们可以用三种不同的方式来发现生命之意义:(1)通过创立某项工作或从事某种事业;(2)通过体验某种事情或面对某个人;(3)在忍受不可避免的苦难时采取某种态度。第一种就是成就或成功,其意义显而易见。找到生命之意义的第二种方法是通过体验某种事情——如真善美——通过体验自然和文化或体验另一个人的独特性——就是说去爱某个人。
  • 在一定意义上,一旦找到了意义(比如牺牲的意义),痛苦就不再是痛苦了。这就是意义疗法的要义之一:人主要关注的不是获得快乐或避免痛苦,而是看到其生命的意义。这也是人们为什么甚至准备着去受苦,在这个意义上,他的痛苦有了意义。

其他

如果有带给你一丝丝小快乐,就让快乐继续传递下去,欢迎转载,点赞,顶,欢迎留下宝贵的意见,多谢支持!

0 0