为了避免将来的验证,返回一个简单的 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 组件的假设下传递该容器,从而减轻对未来验证的任何需求。