问题描述
就像C++那样?俺是初学者,看到现在好像都是在定义一个类的时候提供它的实现(除非是虚类),好像没有在一个文件定义一个类的各个方法的声明、在另一个方法中实现各个方法的例子。如果是这样的话,类的实现都让大家看到了,还怎么实现informationhiding呀?
解决方案
解决方案二:
.net中编程的“接口”,叫做interface。而不是class。你肯定是只看到后者了。
解决方案三:
除了interface,还有abstractclass,等等。.net的dll、exe本身就包含组件的元信息,可以直接被其它.net程序访问到、using到,不需要单独一个.h文件。而且.h文件并不是什么“informationhiding”的屌丝目的,而是因为没有它就根本无法正确地引用、链接。对于基于VM的系统,所谓“informationhiding”也没有多大用处,因为编译出来的dll、exe中的代码也是非常高级的、比较容易读懂的语言(当然,如果你使用Linq等等有lamda等等高度自动化特征的编程方式,反编译的东西就不容易被读懂;如果你源代码写得非常简单,那么反编译出来的东西基本上就是源代码)。何况你有.h文件,也不是不给人家.exe、.dll文件的。所以.h文件本身不能说明什么“informationhiding”,而是.dll、.exe文件本身的反编译性才能说明“informationhiding”。真正的网络化是物理隔离的,比如说你从淘宝客户端,是看不到人家背后的几万台服务器里边的源代码的。这是通过架构来真正进行分层。
解决方案四:
.h文件,也不是不给人家.exe、.dll文件的-->.h文件,也不是不给人家.exe、.dll文件用来隐藏内容的分离出来这个文件的目的,不是为了“informationhiding”。你不给人部署你的.dll、.exe才能真正hiding。
解决方案五:
信息隐藏原则:1多层设计中的层与层之间加入接口层;2所有类与类之间都通过接口类访问;3类的所有数据成员都是private,所有访问都是通过访问函数实现的
解决方案六:
用partialclass啊,可以把不同的代码分散在不同的源代码中。
解决方案七:
C#接口就是这么用的啊,接口定义里只有方法名,实现了接口的类中的方法,才有这个接口的具体实现