代码之家  ›  专栏  ›  技术社区  ›  Marco Bettiolo

将对象方法与对象数据分离

oop
  •  0
  • Marco Bettiolo  · 技术社区  · 16 年前

    遵循SRP和KISS原则,我只设计了一个具有属性的对象,但我需要方法来处理这些对象。分离实体对象数据和实体集对象方法的最佳方法是什么?

    目前我创建了以下对象:

    宠物实体对象
    属性名
    属性年龄

    PET实体集对象
    宠物物品清单

    发动机对象
    PET实体集合的方法加载宠物
    方法getpetbyname of pet entity
    方法获取pet实体集的petsbyage

    这是设计对象的最佳方法吗?

    我正在开发.NET

    谢谢。

    3 回复  |  直到 16 年前
        1
  •  6
  •   MrTelly    16 年前

    你已经实现了 Anemic Domain Model 反模式。类应该实现它们需要的方法,这不会破坏SRP,但是IMHOSRP无论如何都被高估了。

        2
  •  4
  •   John Saunders    16 年前

    一般的想法是让这些方法接近它们所操作的数据。结合数据和操作的构造称为 .

    说真的,你为什么认为把数据和操作分开是个好主意?这与我们几十年来的发展方向相反!

        3
  •  0
  •   Pete Kirkham    16 年前

    使用支持模式匹配的函数语言。既然你在.NET上,那么F是一个显而易见的选择。

    对于面向消息的系统来说,这很好,因为在这些系统中,大多数节点都是无状态的,它们转换消息,然后将消息传递给其他节点。在这些场景中,您不关心改变消息中的数据,也不关心消息的标识;您关心推进每个节点中的处理并发送更多消息。

    您没有进行面向对象的设计,而且面向对象的语言也不很好地支持这种范式——它们将一个可变的数据包绑定到一个具有标识的对象,而不是创建一个消息转换器的反应式系统。

    实际上,这需要你 dual 系统的消息-反应系统中的消息对应于面向对象系统中的方法和参数。大致上,OO程序对象字段中的状态保持为反应程序的调用堆栈,而OO程序的调用堆栈状态保持在反应程序消息字段中。