WEB开发网
开发学院软件开发C语言 Effective C# 原则33:限制类型的访问 阅读

Effective C# 原则33:限制类型的访问

 2009-02-19 08:16:01 来源:WEB开发网   
核心提示: public interface IPhoneValidator{bool ValidateNumber( PhoneNumber ph );}下一步,修改已经存在的电话验证,Effective C# 原则33:限制类型的访问(3),通过接口来实现,而且把它做为一个内部类:internal

public interface IPhoneValidator
{
 bool ValidateNumber( PhoneNumber ph );
}

下一步,修改已经存在的电话验证,通过接口来实现,而且把它做为一个内部类:

internal class USPhoneValidator : IPhoneValidator
{
 public bool ValidateNumber( PhoneNumber ph )
 {
  // perform validation.
  // Check for valid area code, exchange.
  return true;
 }
}

最后,你可以为国际电话号码的验证创建一个类:

internal class InternationalPhoneValidator : IPhoneValidator
{
 public bool ValidateNumber( PhoneNumber ph )
 {
  // perform validation.
  // Check international code.
  // Check specific phone number rules.
  return true;
 }
}

为了完成这个实现,你须要创建一个恰当的类,这个类基于电话号码类型类,你可以使用类厂模式实现这个想法。在程序集外,只有接口是可见的。而实际的类,就是这个为世界不同地区使用的特殊类,只有在程序集内是可见的。你可以为不同的区域的验证创建不同的验证类,而不用再系统里的其它程序集而烦扰了。

你还可以为PhoneValidator创建一个公共的抽象类,它包含通用验证的实现算法。用户应该可以通过程序集的基类访问公共的功能。在这个例子中,我更喜欢用公共接口,因为即使是同样的功能,这个相对少一些。其他人可能更喜欢抽象类。不管用哪个方法实现,在程序集中尽可能少的公开类。

这些暴露在外的公共类和接口就是你的合约:你必须保留它们。越多混乱的接口暴露在外,将来你就越是多的直接受到限制。越少的公共类型暴露在外,将来就越是有更多的选择来扩展或者修改任何的实现。

上一页  1 2 3 

Tags:Effective 原则 限制

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接