今天继续打卡学习极客时间上的专栏“设计模式之美”, 本篇是专栏第7节的学习笔记,第7节是介绍"面向对象"这一设计原则和设计思想的一节。

笔记

本节主要介绍了几种在使用面向对象语言进行编程时违反面向对象编程风格的代码设计(作者主要从Java开发的角度):

  1. 滥用getter、setter方法。在设计实现类时只有到真正需要的时候,才为属性定义setter方法。同样对于不同于setter语法风格封装特性的其他语言,不要过早的将封装的属性暴露成外部可公开读写访问。另外还要兼顾那些已经公开可读的返回集合的属性,防范集合内部数据被修改的风险。

  2. 常量类、Utils类的设计问题。这两种设计在各种面向对象编程语言中都比较常见,在做这两种设计时尽量做到职责单一,定义一些细化的类,这个在很多开源框架和库里比较常见,只要合理使用个人认为这种违反面向对象风格的设计还是可以的。

  3. 基于贫血模型的开发模式。在贫血开发模式中是将实体的方法和数据分离,于是乎这种开发模式就彻底变成了面向过程风格,而DDD主推的则是充血模型。个人认为存在即合理,至少在目前基于MVC的后端Web开发中贫血开发模式用的还是挺多的,如果问题域足够简单,贫血模式又上手快,未尝不可,能抓到老鼠的猫就是好猫。我们学习设计模式最终也是为了写出易扩展、易维护、可复用的代码,殊途同归。

参考