产品或者服务由数据存储和数据计算组成。pojo对象就是用于数据存储。一旦肯定后,整个应用或者产品的数据来源就肯定。好比一个页面或者功能须要使用什么数据就能够快速找到对应的对象或者经过对象的关系找出来。算法
pojo对象属于对系统的静态描述。它应该是名词,不该该是动词或者其余。动词、类型或者状态等应该是算法类型的对象,权限应该是AOP考虑的,在后面的漫谈里还会详细提到。翻译
对领域的客观描述反应。好比说:教育领域,农业领域,电商领域,零食领域等。这些只要领域背景没有变化,就会是客观稳定的。固然不一样的产品的商业模式对同一个领域的理解也会不一样,这些是会常常变化的,可是一般也只是体如今流程、类型、算法、功能等上面,这些并不影响pojo对象。设计
为了快速区分属性,而且快速找到真正的pojo对象和属性。这些属性能够在产品里的新增、详情、列表等功能里获得体现。code
通常体现出来的就是手动输入。好比:名称,标题等。视频
有依赖来源,即在别的地方是手动输入,可是当前功能是选择。好比:选择地区,选择类型。对象
方便查询,减小复杂度。通常有如下状况:生命周期
个性化业务,纯粹是为了作功能开发
只留自描述,这个很难。须要深层次了解领域。经过领域驱动设计。这样能够经过面向对象,经过不多的关注点,对整个系统有个静态的认识。并且还能够判断出产品变动的时候对整个系统的结构(即数据存储)有什么影响。特别是出现新名词的时候。产品
须要根据产品的实际状况来判断这些属性怎么规划。若是是想要快速、简单,可是4种类型都放到pojo上,开发是最快的,可是同时确定也是扩展性最差的。也须要根据产品的真实需求来判断怎么处理后面3种类型的属性。电商
不少童鞋打着面向对象的幌子干着面向过程的事。在抽取名词的时候同时又考虑算法、流程、权限等。这样一来关注点几何倍数增加,原本应该用于考虑pojo对象是否合理的时间更没办法充分获得利用。
不少童鞋想成一次就把对象抽取出来。实现上抽取比印象中还要复杂。因此建议的是分步骤,循序渐进的去抽取才是最快的办法。
只是把产品里涉及到的全部名词枚举出来。
下面是枚举时的陷阱:
这些陷阱很容易让后期返工。
删除和产品(领域)无关的名词。好比:文案可能出现了故宫
或者平台名等和本领域无关的名词。
必需确保每一个名词都是职责单一,不可替代的。
通常去重的特征以下:不一样的名词体现出来的属性,功能和生命周期是同样的,只是描述不一样。
好比: 不一样角色的人在对同一个名词描述不一样,他们在新增的时候属性类似度很是高,流程也特别像。
通常的反问本身或者产品:
把属性名词聚合到对象名词里。这里务必确认只放自描述属性。其余的属性暂时不考虑,由于能够很方便的经过关系来描述,并且这个也常常会变化。
若是有如下的状况说明对象分析的不够合理,后面很容易返工,请务必重视。
有一方有一直在说,可是另外一方历来不提。说明这里缺乏重要名词。
在描述同一名词的时候,每每需求进一步翻译。
这样可能会出现的问题是: