3

为了避免将来的验证,返回一个简单的 String 对象的包装器是否有意义?

例如,URI 是一个简单的字符串,由多个部分组成:方案、权限、路径、查询和片段。在设计一个表示 URI 的类时,我可以将 URI 的各个部分公开为简单的字符串对象,或者可能通过接口 IUriCompontent。

public interface IUri
{
    IUriComponent Scheme { get; set; }
    IUriComponent Authority { get; set; }
    IUriComponent Path { get; set; }
    IUriComponent Query { get; set; }
    IUriComponent Fragment { get; set; }
}

public interface IUriComponent
{
    String Value { get; }
}

我的想法是,在从 URI 中解析出组件之后,每个组件都可以放入一个不可变的、经过验证的容器中。然后可以在其内容表示有效 URI 组件的假设下传递该容器,从而减轻对未来验证的任何需求。

4

1 回答 1

1

这确实有道理。事实上,URI 不是字符串。URI 是一个包含方案、权限等的概念。这些组件和 URI 本身可以表示为字符串这一事实是一种可能实现的实现细节。

如果你让你的 URI 不可变,你只需要验证一次,而且你可以免费获得线程安全

当然,这是否可行或方便也将取决于您的应用程序的要求和用例。但我认为提供一个属性以将 URI 作为字符串返回就足够了。

于 2013-06-01T02:11:18.227 回答