我建议使用一些设计模式的混合包。这将帮助您有效地解决这个问题,并使代码也可维护。
根据我的知识,您可以在这里使用抽象工厂模式。见下图中的设计草图。
subclass1 和 subclass2 中的 method1 和 method2 是应该公开的,而 subclass1 和 subclass2 中的 method3 和 method4 是我们不想公开的。
创建一个 Genericsubclass 接口,并根据子类中方法的性质在该接口中创建一些方法。例如:我在这个接口中创建了一个名为 nonEventbasedmethod1 的方法
为每个子类创建一个工厂,每个工厂都会实现 GenericSubclass 接口。然后在 subclass1Factory 中实现 nonEventbasedmethod1 方法就像
nonEventbasedmethod1(){
subclass1.method1();
}
并且在 subclass2Factory 中实现 nonEventbasedmethod1 方法类似于
nonEventbasedmethod1(){
subclass2.method3();
}
然后创建一个 SubclassAbstract Factory,它将返回其中一个子类工厂,然后不用担心返回了哪个工厂(在返回适当的工厂之前已经在 SubclassAbstractFactory 中做出了该决定)只需从 GenericSubclass 接口和以下之一调用所需的方法将调用来自 subclass1 或 subclass2 的方法。
希望这可以帮助。