【问题标题】:How to let only one class access a particular API class如何只让一个类访问特定的 API 类
【发布时间】:2016-08-30 01:13:11
【问题描述】:

我有一个包中的特定类:org.jdesktop.swingx.JXErrorPane。

我使用工厂类来调用 JXErrorPane 类中的方法,而我禁止任何其他类调用 JXErrorPane。任何其他需要使用 JXErrorPane 类的类都需要调用工厂类。

我在这个网站上找到:http://www.eclipsezone.com/eclipse/forums/t53736.html关于如何禁止访问特定的类或包,但它也会禁止我的工厂类。

有没有办法只允许工厂类访问API类而禁止任何其他类?

【问题讨论】:

  • 你对JXErrorPane有控制权吗?如果是这样,您可以将其设为 package-private 并将您的 Factorypublic 修饰符放在同一个包中。那么只有同一个包中的类(例如你的工厂)可以访问JXErrorPane

标签: java eclipse api dependencies dependency-management


【解决方案1】:

您的问题有点奇怪,但这是我的两分钱:访问修饰符应该是您的朋友。如果您不希望类在包外可见,则类级别的默认访问修饰符将是有意义的。默认构造函数会将对象的构造限制为仅在包内可见。我假设这是您在问题中提到的工厂的应用程序。工厂用于创建对象。

至于限制对工厂方法的调用,这不是工厂的正确应用。也许您正在寻找代理或委托模式。即使在这种情况下,访问修饰符也是你的朋友。我不知道你为什么想要这么复杂

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-06
    • 2013-11-24
    • 2015-06-14
    • 2011-03-22
    • 1970-01-01
    • 2018-08-29
    相关资源
    最近更新 更多