Internal在工厂中的应用

14 篇文章 0 订阅
8 篇文章 0 订阅

 

Internal 的作用

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

The internal keyword is an access modifier for types and type members. Internal types or members are accessible 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()来实例化类),从而达到了产品的封装。

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值