GO面向对象(做CRUD专家)二 :贫血模型和充血模式

613 阅读1分钟

贫血模型
example1中的bo.Item就是贫血模型;

贫血模型中的对象作用很简单,不包含任何业务逻辑,只是用来做为数据对象的承载和传递的介质(java语言包含属性的getter/setter)。

充血模型
example2中的bo.Item就是充血模型;

面向对象的本质是:一个对象拥有属性和行为;

真实世界的猫:
颜色、公母、年龄就是它的属性;
吃、喝、跑、跳就是它的行为;

计算机世界的商品:
标题、库存、市场价就是它的属性;
计算折扣价格就是它的行为;

面向对象是一种对现实世界理解和抽象的方法,贫血模型完全和面向对象设计背道而驰,面向对象设计主张将数据和行为绑定在一起,而贫血模型则更像是一种面向过程设计,这不符合真实世界的基本逻辑;

为什么要对现实世界进行理解和抽象?
程序最终都是为现实世界的人进行服务的,项目需求也是基于日常生活中人的某些需求而不断的产生和改变,只有保证计算机世界的基本逻辑和真实世界的基本逻辑保持一致,才能保证程序实现真实世界的需求时可以做到一一映射;

这一段不太好理解,云里雾里的,也不想说太多,希望读者脑海里大概有个印象,在之后的开发过程中慢慢体会。