Internal在工厂中的应用

来源:互联网 发布:林冉网络班报名 编辑:程序博客网 时间:2024/05/17 04:21

 

Internal 的作用

先看在msdn的说明吧: http://msdn.microsoft.com/en-us/library/7c5ka91b.aspx

The internal keyword is anaccess modifier for types and type members. Internal types or members areaccessible only within files in the same assembly,(在大致说,internal关键字修饰的成员,只能被同个程序集中的对象访问

例子:

public class BaseClass

{

    // Only accessible within the same assembly

    internal static int x = 0;

}

 

这里面的x,只能被所在程序集的类访问,当然,如果另一个程序集的一个类继承了当前程序集的BaseClass,他能访问到x成员。这儿多说一句,假设BaseClass也被internal 修饰了,则外部程序集,肯定就访问不了BaseClass了。

Internal在工厂中的应用

再来讲讲internal这一点特性在抽象工厂中的应用吧,或者简单工厂。这儿不关注他们的差异。我们知道,工厂生产的流水线是不应该被用户随便访问的,客户只是从大门外提走产品就行,他们对生产流水线不感兴趣(站在客户的角度)也不应该感兴趣(站在生产商的角度,比如防止技术外露)。好了,来看看不用internal关键字的设计(这里我假设您对工厂模式有相当的理解了),就画一下类图。


 

 

 

这里面,要求ProductA,ProductB,ProductCInternal类型。则会有一个好处:外部只能访问IProduct接口,只能由工厂Factory生产产品。达到了对流水线的封装:客户在工厂门外取产品,而不用在工厂里面去取产品。在外部,不能直接实例化产品类(即客户端不能用 IProduct p = new ProductC()来实例化类),从而达到了产品的封装。

 

 

 

 

 

 

 

原创粉丝点击