【发布时间】:2011-12-15 22:47:11
【问题描述】:
所以我得到了Address 类:
class Address
{
private String streetAddress;
private int number;
private String postalCode;
private City city;
private State state;
private Country country;
}
我想让它的可读版本显示在网格列中。
实现这一点的最佳和简洁的方法是什么?
-
toString类Address中的方法(我个人不喜欢这种方法,因为“toString”与地址没有直接关系) - 类
ReadableAddressFormatter-
ReadableAddressFormatter(AddressaddressToFormat) - 公开
String getFormatted()
-
- 上一个类,但
getFormmated将是静态的,接收Address实例并返回字符串 - 其他?请提出建议。
我正在寻找一个好的设计,同时关注清洁代码、解耦和可维护性。
【问题讨论】:
-
选项 2 是我会做的,因为它将模型与演示问题解耦。
-
我不同意您关于“'toString' 与地址没有直接关系”的说法。打印地址是地址目的的核心。
-
@Cpfohl:ToString 用于返回对象的字符串表示形式。它不是演示工具。这是一个基础设施问题。
-
您对多种语言的定位必然会导致对选项 1 的不同意见,因为在 c# 中使用 toString 用于最终用户显示建议似乎是一种公认的方法,而在 Java 中则不赞成除了非常简单的数据类型。你的不是一个简单的类型。
-
@Mr.Disappointment:它的使用很简单(日志记录、简单结构、基本类型等),但为了正确表示问题,您应该按照 WPF 和 MVC 进行某种单独的转换/转换实现。上面的“地址”是一个未密封的复杂类型,它可能有多种表示模式,因此如果您使用 ToString,您将违反 a) SRP 和 b) Liskov 替换规则。还有国际化怎么办。如果您必须包含几种国际地址格式,SRP 将被彻底破坏。
标签: c# java oop coding-style