《敏捷软件开发》《企业应用架构模式》都是比较老的书了,出的时候我才刚上大学吧。当年看一定比现在看的收获大。
书里说的有些已经过时,有些已成为当今的常识,有些已被常用框架实现,有些还是经典。
总的来说,敏捷这本书给我带来最重要的一句话是:用设计原则去发现问题,用设计模式去解决问题。
SOLID设计原则:
SRP 单一职责:类职责单一,要高内聚低耦合。根据实际情况,如果职责会分别演化,那必须分开,如果都是同时演化,放在一起也行。
OCP 开闭原则:扩展开放,修改关闭。应用设计模式,使扩展功能时候,新增代码即可,不用修改老代码、
LSP 李氏替换原则:子类必须能替代父类。父类有的功能都不能少。碰到不能替代的时候,考虑再抽取个公共基类。
ISP 接口隔离原则:不应该强迫客户依赖于他们不用的方法;使用实现多个接口方式分离接口(java不支持多重继承)
DIP 依赖倒置原则:依赖于抽象类或接口
开闭原则属于我之前一直理解错误的,现在觉得就是扩展性,一个扩展性不好的设计,在要加新功能的时候,就需要去添加if else,这就是修改;
一个符合开闭的设计就是利用设计模式,例如使用策略模式,那么当新增一个策略的时候,只需要新写一个策略类就行了,修改关闭了;
出现预料不到的需求,有时候还是得修改类,所以设计原则是方向,没有绝对。
另外,看过N本设计的书了,有个共同点,就是 简单设计,仅针对最复杂最核心最常用的 好好设计。这个如何把握看自己了,不要过度,简单是最好的。
《企业应用架构模式》给我带来的收获是:对一些常用的例如DTO,仓储层,分布式粗颗粒接口,领域模型与事务脚本(充血与贫血模型),ORM脏数据检查等等
有了真真的理解,而不像以前只是用了而已,不知道为啥要这么用。
还有书里有一句对于乐观锁,悲观锁的解释我觉得特别好,乐观锁是检查,悲观锁是避免;