【问题标题】:Is the only difference between a POCO and 'Value Object' is POCO targets .Net?POCO 和“值对象”之间的唯一区别是 POCO 的目标是 .Net 吗?
【发布时间】:2011-04-06 08:06:45
【问题描述】:

我实际上是在尝试理解 POCO 的确切含义(是的,我已经阅读了维基百科,但仍然无法理解要点:()。

我知道值对象是一个基本上只有属性来保存数据而没有任何行为的对象。

在这种情况下,在我看来,POCO 和“值对象”具有相同的结构,但不同之处在于 POCO 以 .net 框架为目标。

我说的对吗?

谢谢。

【问题讨论】:

    标签: c# .net poco value-objects data-transfer-objects


    【解决方案1】:

    普通的旧 CLR 对象

    术语 POCO(普通旧 CLR 对象)通常用于指代一个 .NET 类,它对外部第三方库没有任何直接或间接依赖关系。 POCO 这个词本身并没有说明对象是仅包含数据还是包含数据和行为。但是,它确实表明该类是在 .NET 平台之上构建的。

    值对象

    值对象(或数据传输对象)是一种通用的设计模式,描述了使用对象作为数据结构在系统的不同部分之间传输数据。这些对象通常只包含数据,除了访问器方法之外不包含任何行为。

    鉴于上述定义,可以公平地说,在 .NET 平台上构建且不依赖第三方框架的值对象是 POCO。同样,根据其结构和使用方式,POCO 可能是也可能不是值对象。

    相关资源:

    【讨论】:

    • +1,很好的解释。术语值对象也用于没有自己的标识并且通过值进行比较和传递的对象。在 C# 中,这些是值类型。在 NHibernate 中,这些是组件。
    • +1。我要补充一点,使有效对象不可变通常是一种好习惯——即它们的值只能在构造时设置。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多