【发布时间】:2016-01-02 08:39:46
【问题描述】:
我有一个类包含一个私有成员(它本身就是一个对象)。我想以合法的方式访问该成员并修改其属性。我想这样做的方法是让类调用我的类的方法(我想在其中访问它)及其私有成员。
例如,我有一个类ClassA,它的属性为mItem。我想在ClassB 中获取mItem 的实例,以便稍后(当用户在UI 上更新某些内容时)调用mItem.update()。从ClassB,我想调用ClassA 的方法(比如passItem),它实际上调用ClassB 的某个方法(比如obtainItem(Item item))传递mItem。但是,我想强制执行此操作,以便passItem 实现要求使用mItem 调用ClassB 的obtainItem。
有什么想法吗?
【问题讨论】:
-
而 classA 没有该属性的 getter/setter? Mabye 这将是最常见的处理方式。一个真实的例子会对你有很大帮助。
-
为什么不在 ClassA 中创建一个委托给 mItem 的更新方法?你为什么要打破封装?如果 ClassA 和 ClassB 如此依赖于彼此的内部结构,那么将它们作为不同的类有什么意义呢?对于第二种情况,ClassA 是否拥有 ClassB 的实例?它们是静态方法吗?同样,为什么它们如此依赖彼此的内部结构?举一个合适的例子来说明你想要达到的目标。基本上告诉问题而不是要求解决解决方案。
-
@Jan, @aseem-bansal 可以将
ClassA视为许多类的容器,例如ClassB、ClassC。ClassA的实例持有mItem的实例,ClassB、ClassC的实例可以更新(通过调用mItem.update()和其他一些方法)。这就是为什么我想要引用mItem。 -
没有吸气剂的容器对我来说似乎毫无用处。除非容器出于某种原因保护内部值。容器/classA 也是你的代码吗?
-
@jaibatrik 如果我们不必“考虑”这些类,而可以看到它们,那么理解您的意思并提出解决方案会容易得多。发布您的代码而不是描述它。
标签: java class design-patterns interface