如何防止同一业务对象的多个类?

时间:2008-09-23 00:25:51

标签: oop code-duplication

很多时候我会有一个Business对象,它具有用户索引的属性或某些数据的索引集。当我在表单或其他视图中显示此对象时,我需要用户的全名或数据的某些其他属性。通常我会创建另一个类myObjectView或类似的东西。处理这种情况的最佳方法是什么?

进一步澄清: 如果我有一个类问题跟踪器,我的类问题有IxCreatedByUser作为属性和IxAttachment值的集合(附件记录的索引)。当我在网页上显示这个时,我想显示John Doe而不是IxCreatedByUser,我想在页面上显示附件和文件名的链接。所以通常我创建一个新的类,其中包含一个附件对象集合和一个CreatedByUserFullName属性或类似的东西。创建第二个类来显示页面上的数据只是感觉不对。也许我错了?

3 个答案:

答案 0 :(得分:2)

外观模式。

我认为您的方法,创建一个外观模式来抽象多个数据源的复杂性通常是合适的,并且会使您的代码易于理解。

应该注意创建太多的抽象层,因为间接层将破坏使代码更易于阅读的初始尝试。特别是,如果你觉得你只是写课程来匹配你在其他地方所做的事情。对于intance,如果您有myLoanView,则不一定需要为系统中的每个对话创建一个myView。从代码中返回10步,并且可以创建一个可重用且直观的抽象外观,您可以在多个地方使用。

随意详细说明挑战的确切性质。

答案 1 :(得分:1)

一个关键原则是每个类都应该有明确的目的。如果“业务对象”类的目的是公开与业务对象相关的相关数据,那么在类上创建一个属性是完全合理的,该属性将查找描述的请求委托给负责该业务对象的相关类。信息。任何特定于您的类的格式都将在属性中完成。

答案 2 :(得分:0)

这里有一些指导方针可以帮助您决定如何处理这种(非常常见的IMO)模式:

  1. 如果您需要的是一个快速链接到不经常更改的查找表(例如,链接到州和/或国家/地区的表的地址表),您可以保持延迟加载,查找表的静态副本。

  2. 如果你有一个非常大的类需要加载大量的连接或子查询才能用于显示目的,你可能想制作一个“视图”或“信息”类用于显示目的,就像你一样如上所述。只需确保XInfo类(用于显示)加载速度明显快于X类(用于编辑)。这种情况下,在数据库端使用视图可能是一个非常好的主意。