Java MVP中的类可视性和实例化

Java MVP中的类可视性和实例化,java,android,design-patterns,Java,Android,Design Patterns,我希望在Android中使用MVP模式,我大致提供了以下软件包和类: 以下是3个软件包: com.myview mainActivity //public com.ipresenter IPresenter //public com.PresenterImpl Presenter //protected 演示者实现i演示者 我打算做的是使Presenter受到保护,并且只能在mainActivity中实例化。换句话说,我想限制它的可见性,只有通过mainActivityclas

我希望在Android中使用MVP模式,我大致提供了以下软件包和类:

以下是3个软件包:

com.myview

mainActivity  //public

com.ipresenter

IPresenter  //public

com.PresenterImpl

Presenter  //protected
演示者
实现
i演示者

我打算做的是使
Presenter
受到保护,并且只能在
mainActivity
中实例化。换句话说,我想限制它的可见性,只有通过
mainActivity
class才能创建此类

由于其构造函数被隐式声明为受保护,因此我无法在类
mainActivity
中实例化
Presenter

我如何才能做到这一点而不必让演示者公开?如何限制包中某个(或某些)类的可见性,并仅允许通过另一个包中的另一个类创建它

我考虑过
classLoader
Iterator方法,但这是一种过分的方法,还是因为还有其他方法/模式而没有必要

许多书似乎建议我们尽可能地限制课程的可见性,所以我借此机会学习并利用好实践

增编:


除上述内容外,我的最终目标是能够使用接口类型在
mainActivity
中声明演示者。因此,如果将来我有多个演示者,他们仍然都是界面类型
IPresenter

,如果您只想在mainActivity中使用,而不想在其他任何地方使用,您可以将其作为mainActivity的私有静态嵌套类。@Patrick感谢您的回复。你能告诉我怎么做吗?此外,如果我不只是想在
mainActivity
中使用它,为什么会有所不同呢然而,MVP类应该能够一起“玩”,所以您真的不应该让Presenter受到保护。如果您不允许单独的部分彼此“看到”,那么这就无法实现分离关注点的目的。