如何限制仅在不同程序包中的另一个类中的类可见性?

天:

我的项目中具有以下包和类结构,

package de.mycompany.jakarta.order;
import de.mycompany.ordermanagement.order.OrderCancellationService;
public class DrugOrderManager {
private static final DrugOrderManager INSTANCE = new DrugOrderManager();

private DrugOrderManager() {
}

public static DrugOrderManager getInstance() {
    return INSTANCE;
}

public void cancelOrder() {
    OrderCancellationService.getInstance().process();
}   }



package de.mycompany.ordermanagement.order;
public class OrderCancellationService {
private static OrderCancellationService INSTANCE = new OrderCancellationService();

private OrderCancellationService() {
}

public static OrderCancellationService getInstance() {
    return INSTANCE;
}

public void process() {
    
}   }

我的意图是OrderCancellationService应该仅由DrugOrderManager调用,任何其他类/服务都不应直接调用它。我正在尝试使DrugOrderManager成为所有服务的网关。如何限制这种可见性?请指教

沙多夫:

要执行您想做的事情,您可以简单地OrderCancellationService在内部创建一个私有的静态类DrugOrderManager

但是,就您的情况而言,我想您将有更多类似的类OrderCancellationService-因此将所有这些类放在一个包中,并仅将其DrugOrderManager公开,而将所有其他服务都打包为私有,可能是一种更好的方法。您只为使用者公开单个入口点,它是可管理的并且易于理解代码。

如果您不能移动类,那么我想Java中没有解决方案。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何设置WPF中另一个类的元素的可见性?

从另一个类中的另一个线程更改视图可见性

从另一个类更改webView可见性

从另一个类更改 JFrame 的可见性

如何将可见性从另一个类设置为属于活动的 textview 和 imageview?

我如何从另一个类访问对象的方法,而该类的可见性不高?

如何在另一个Eclipse工作区中创建的项目中使用另一个程序包中一个程序包的类

如何从我的程序包中的另一个程序包加载数据

如果另一个元素具有类,则更改元素的可见性

在Kotlin中,如何将扩展方法添加到另一个类中,但仅在特定上下文中可见?

角度-如何在另一个组件中切换一个组件中某个元素的可见性?

RCP应用程序中包之间的类的运行时可见性

如何在C ++中伪造“类的可见性”(而不是函数的可见性)?

为什么Java 5+中的volatile不能确保另一个线程的可见性?

Inform7 中另一个人的全局可见性?

ProtoBuffer通过gradle生成的类在IntelliJ的另一个模块中不可见

通过特定的程序集限制类的可见性

如何使一个Java类仅对包中的另一个类可用

具有不可见构造函数的公共类可以由另一个包中的类扩展吗?

如何从另一个程序包的依赖项列表中删除特定程序包?

根据另一个视图的可见性隐藏一个视图

当我将ImageView的可见性设置为GONE LinearLayout时,它的一个子项保留,另一个在android中消失

如何将一个包中的类导入到另一个包中的另一个类中?

将类移动到另一个程序包后出现MissingRequirementError

如何使用 Javascript 延迟文本框的可见性,然后在第一个框可见后隐藏另一个框

如何将Java类(从一个包中)继承到另一个类(在另一个包中)

如何在Atom编辑器中给一个程序包优先于另一个程序包?

如何控制 Android 中的可见性,这是一个错误吗?

如何从另一个 WinForm C# 更改控制器的可见性