良好做法:用于后端目的的未使用属性
Good practice: unused properties for backend purposes
这是软件设计中的初学者问题。
我有一个这样的class
ProductProperty
----------------
+product_property_id:int
+values:array
+current_value:string
在前端场景中,我使用此 class 为产品及其属性建模,其中包含可能的值(值是一个字符串数组)和所选值(current_value 包含存储在值)。
在后端?我应该在那里使用不同的 classes 吗?我的意思是我使用此 class 来创建具有属性的新产品。我实例化一个像 new ProductProperty(435, NULL, bla, bar, bah)
这样的对象来创建和存储一个像
这样的对象
{
id:435,
values:['bla','bar','bah'],
current_value:NULL
}
永远不要使用 current_value-属性.
例如,为了存储订单,我当然会填充 current_value-属性,但实际上并没有使用值数组。
这样可以吗,还是我必须为每个案例创建单独的 classes。
最好的做法是采用值对象 (VO) 或数据传输对象 (DTO) 等模式。这意味着您必须创建另一个 class 仅具有要从一个层传输到另一个层的属性。我发现它在比您的示例复杂得多的情况下是必需的并且很有用。考虑到同一实体的许多 class 系统维护工作量往往比使用充满空属性的 class 要高得多,因为计算能力比程序员的小时费率便宜得多。
查看这篇关于差异的文章:http://www.adam-bien.com/roller/abien/entry/value_object_vs_data_transfer
这是软件设计中的初学者问题。 我有一个这样的class
ProductProperty
----------------
+product_property_id:int
+values:array
+current_value:string
在前端场景中,我使用此 class 为产品及其属性建模,其中包含可能的值(值是一个字符串数组)和所选值(current_value 包含存储在值)。
在后端?我应该在那里使用不同的 classes 吗?我的意思是我使用此 class 来创建具有属性的新产品。我实例化一个像 new ProductProperty(435, NULL, bla, bar, bah)
这样的对象来创建和存储一个像
{
id:435,
values:['bla','bar','bah'],
current_value:NULL
}
永远不要使用 current_value-属性.
例如,为了存储订单,我当然会填充 current_value-属性,但实际上并没有使用值数组。
这样可以吗,还是我必须为每个案例创建单独的 classes。
最好的做法是采用值对象 (VO) 或数据传输对象 (DTO) 等模式。这意味着您必须创建另一个 class 仅具有要从一个层传输到另一个层的属性。我发现它在比您的示例复杂得多的情况下是必需的并且很有用。考虑到同一实体的许多 class 系统维护工作量往往比使用充满空属性的 class 要高得多,因为计算能力比程序员的小时费率便宜得多。
查看这篇关于差异的文章:http://www.adam-bien.com/roller/abien/entry/value_object_vs_data_transfer