Java 在多模块程序中访问模块的变量和方法

Java 在多模块程序中访问模块的变量和方法,java,modularity,Java,Modularity,我有一个模块化的程序,我正在写的目的是有模块,是完全功能作为独立的单位结合核心程序 这意味着当一个新模块被“插入”或移除时,程序根本不会中断,并且不需要对任何其他代码进行更改,以便程序在有或没有某些模块的情况下编译和执行 我的问题是,我应该为所有模块中的所有变量设置公共getter和setter,并将所有方法公开,这样,如果开发人员在开发自己的模块时需要访问或更改某些模块中的变量(例如),他们就可以这样做,而不必更改访问修饰符,还是应该重新考虑我的设计 提前谢谢你 只要我需要帮助你,我会根据我对

我有一个模块化的程序,我正在写的目的是有模块,是完全功能作为独立的单位结合核心程序

这意味着当一个新模块被“插入”或移除时,程序根本不会中断,并且不需要对任何其他代码进行更改,以便程序在有或没有某些模块的情况下编译和执行

我的问题是,我应该为所有模块中的所有变量设置公共getter和setter,并将所有方法公开,这样,如果开发人员在开发自己的模块时需要访问或更改某些模块中的变量(例如),他们就可以这样做,而不必更改访问修饰符,还是应该重新考虑我的设计


提前谢谢你

只要我需要帮助你,我会根据我对你问题的理解来回答你。如果你还需要问什么,请留下评论,否则别忘了给我的答案打分

访问修饰符(
public、private等
)是为了在类中实现
抽象和封装而构建的,它们都是面向对象编程的关键概念。因此,你必须分析你的需求你应该向外界透露什么或向外界透露什么,特别是如果你想发布你的代码并在不同的系统中使用,并且你不需要其他开发人员更改一些只在内部使用的属性
数据库连接字符串

  • 模块化,通过接口定义公共功能并实现这些接口

  • 另外,我想到的一个原则是,为了避免大量代码更改、中断和依赖,您应该支持组合而不是继承

  • 依赖注入框架帮助您注入模块,例如Spring框架附带依赖注入

  • 所有这些原则都将实现
    Open-close
    Liscov-substitution
    原则,其目标是使您的代码易于扩展和扩展,同时保持系统关闭以进行修改

现在应该是设计模式,您应该一起构建组件,但它仍然基于您的需求,您可以使用
工厂方法
,例如,如果您有一个工厂构建多种类型的对象<代码>策略
您需要在运行时根据用户激活等更改行为


答案甚至应该比这更长,但是我试图让你看一看你应该在哪里搜索并从这里继续。

问题还不够清楚,因为我不知道你到底做了什么,但是我可以给你一些指导,以满足你设计模块化组件的要求@msoliman我还没有做任何事情,我请求这样我就不必回去删除我写的所有东西。我试着使用反射和自定义配置文件,但我发现我什么都做不到,我很可能用Java做任何事情。使用公共getter、setter和方法将是一个解决方案,但我想知道是否有更好的方法来解决这个问题。谢谢你的评论!大家好,欢迎来到Stack Overflow。这是一个很好的问题,但不是一个很好的问题,因为它非常广泛。你可能会得到反对票,但不要气馁:这个网站对某些类型的问题非常有帮助(而且对其他类型的问题也很有敌意)。请花些时间阅读和其他好问题,以了解本网站的用途。仅供参考,您的问题类似于和。请注意,这些问题得到了7个和16个答案(这实际上是一个问题的证据:宽泛的、高层次的问题往往得到长而固执己见的答案,这本身并不坏,但通常不适合这样做)。我建议您阅读这些问题和所有答案,了解更多观点。@DavidS感谢您提供的链接!我所看到的答案的唯一问题是,他们关注的是面向对象设计,而不是模块化设计。但我确实看到这个问题有点主观,正如帮助页面所显示的,这并不是问题的目的。我更新了我的问题,希望能提供更多关于我的问题的细节,但只是为了澄清:假设我有一个我的核心模块(运行一切的模块)和辅助模块x和y。另一个开发人员出现并希望开发模块z,但需要从模块x运行一个方法,并从模块y获取一些变量。为了促进这一点,我应该公开所有内容,以便模块x和y中的所有内容都是可访问的,还是让他们根据自己的需要调整其他包中的访问修饰符?将必要的内容公开,并在以后进行调整,以提供更多的访问权限。如果您有多个客户端,如您所说,其中一些客户端应该具有公共属性,而另一个客户端或模块需要不同的公共属性,请使用继承或组合,并为每个客户端公开自己的类,@nanoandrew4是否清楚或仍然混淆您的评论是否清楚,感谢您的快速回复。@nanoandrew4请不要忘记给我的答案打分,如果它对您有帮助,请将我的答案打为正确。我给您的答案打分,但在将此答案打为正确答案之前,将等待其他人是否有其他答案。