【发布时间】:2012-06-19 04:08:14
【问题描述】:
我在这里有一个非常奇怪的问题。我有A类,B类和C类。我想创建B类的对象,它可以创建A类的对象。但是如何限制C类创建A类的对象。
一种方法是在Class B里面定义Class A,这样只有Class B可以创建Class A的实例,Class C不能访问Class A。
但是,我认为嵌套是一种错误的方式。
我们有什么方法可以限制对象的创建吗?是否可以使用属性和反射来帮助限制?如果可能的话有推荐的方法吗?
请分享您的想法。提前致谢。
【问题讨论】:
-
如果设计上只有类B可以访问类A,嵌套是一个很好的解决方案。您对此有何不满意?
-
在Real Word中,A类和B类的目的有两个不同的目的。当我们在 B 中定义 A 时,那么 B 的责任不仅是拥有 A 类,而且还具有最初的目的。是不是违反了SRP。谢谢。
-
拥有A级并不意味着维护它。 A 类仍然像以前一样自给自足。 唯一改变的是A类accessibility。那是 architecture 问题,而不是 OOP,imo。
-
好的。但是,只是为了可访问性,这是在 B 中定义 A 的好方法吗?谢谢
标签: c# .net instantiation encapsulation access-modifiers