在这种情况下最好的做法是什么?

时间:2011-11-03 15:44:52

标签: asp.net oop

我想写一个小的asp.net网页,通过绑定到转发器来显示一组对象,想到这一点。

基本上我创建的类,我们称之为'Test',有一个整数数据类型的price属性(忽略使用这种类型的限制,我只是以它为例)。但是,我想格式化此属性,以便显示货币和正确的小数位等。

最好的做法是在类中返回一个返回对象的格式化字符串的函数,或者最好在我的Web表单的后端有一个函数来对对象进行操作并返回格式化的字符串?

我之前听说过一个课程应该包含它的所有相关功能,但我也听说过我的N层应用程序中的表示应该保存在“表示层”中。

在我的情况下,最好的方法是什么? (并且如果我没有足够清楚地解释这一点,请道歉!)

谢谢!

4 个答案:

答案 0 :(得分:2)

在我看来,从OO的角度来看,这两个选项都是有效的。

  • 由于值价格(恰好有错误的数据类型),因此将格式设置到数据类中是有意义的。它不是特定于Web界面的东西,如果您开发了不同类型的用户界面,则很可能再次需要这种格式。

  • 另一方面,这是一个演示问题,所以将它放入表示层也是有意义的。

答案 1 :(得分:1)

对于一般的OOP内容,该对象不应暴露实现细节。我选择将其解释为“尽可能避免设置者和吸气剂”。

在你的问题的上下文中,我建议你有一个getPriceDisplay()方法,它返回一个包含格式化价格的字符串。

格式的实际实现隐藏在实现细节中。您可以提供用于格式化,使用某些后端调用或其他内容的通用函数。这些细节应该对“测试”对象的消费者没有任何影响。

答案 2 :(得分:1)

虽然这不是OOP方法,但在我看来,这是扩展方法的好时机。将其称为.ToCurrency(),其格式为货币...如果需要,可以从Web.Config文件中获取。

修改

详细说明一下,我只需在扩展方法中调用.ToString("your-format")(当然这对于您的特定问题可能就像.ToString("C")一样简单)。这允许您在一个位置更改整个UI中的格式。我发现在处理Web应用程序中的DateTime格式时这非常有用。

答案 3 :(得分:0)

不会.ToString("C");完成这项工作吗?这将是我想象的表示层。