我有一个经理类负责管理某种对象.要做到这一点,它需要操纵这些对象,但这些对象与管理器无关,所以从技术上讲,它们位于单独的包“project.managers”和“project.objects”中.重要的是,有问题的对象只能由管理者操纵,而不是其他任何地方,但需要项目中的其他每个类都可以访问.
因此,我希望管理员可以访问操作方法,但限制对其他所有类的访问.最明显的一种方法是将管理器类和对象类移动到同一个包中并声明受保护的操作方法,但由于管理器和对象是完全独立的实体,因此它们不符合哲学.
(这部分是因为我希望我的IDE在我自动完成有问题的对象上的代码时停止向我显示操作方法所以我总是必须通过管理器的路径,以便每当我更改有问题的对象时相应的表都会正确更新) .
有什么想法,或者在任何情况下最明显的方式是最好的吗?
解决方法:
为什么没有调用接口
ManagerFunctions
和另一个叫
ClientFunctions
您管理的对象将实现这两个.
创建托管对象时,可以传递它们,但仅作为对ClientFunctions的引用.但是,管理器对象将它们称为ManagerFunctions,因此可以访问它们的“托管”功能.适当的铸造将简单地暴露适当的方法.
您的IDE将根据引用这些对象的方式自动显示相应的方法.
标签:java,package,theory,access-specifier
来源: https://codeday.me/bug/20190625/1287355.html