在java,软件设计中查找关于类的信息?

Per*_*son 3 java design-patterns class-design class

我有一堆扩展抽象Base类的类.每个子类都采用构造函数中的数组(不同长度取决于类).这些课程可以由其他人编写.

找出类需要的数组长度的最佳方法是什么?我可以:(A)要求每个派生类都有一个静态方法,返回长度.但是,基类不能强制执行此操作,因为抽象静态方法在java中不起作用.(B)每个派生类都有一个没有参数的构造函数,我构造这样的类只是为了能够调用countParameters()方法,我可以从Base类强制执行.这感觉"笨拙",因为我对创建这样的对象不感兴趣,但只需要一些关于它的信息.

原因是我正在创建一个GUI,它使用户能够创建Derived类的实例,但每个Derived类都使用不同数量的参数.也就是说,我需要知道如何在创建类之前绘制GUI.

编辑:我可以要求每个Derived类都有一个私有构造函数,没有参数,并且使用反射我可以调用countParameters()方法.

EDIT2:实际上,我感兴趣的是参数的名称是什么.也就是说,如果Derived类具有构造函数

public Derived(double name1,double name2,...)
Run Code Online (Sandbox Code Playgroud)

我需要一种方法来生成String []数组

{name1,name2,...}
Run Code Online (Sandbox Code Playgroud)

我想如果不创建类的实例就不可能做到,但是为了让用户能够创建这样的类,他/她需要参数名称!片刻22.

sor*_*oru 5

听起来你需要工厂模式.

一般来说,基类知道它的后代集是一个坏主意.所以你定义了另一个类,它的工作就是知道它.

如果你有像Shape这样的东西,将ThisShape和ThatShape作为派生类,那么ShapeCreator将处理创建程序支持的特定形状集的工作,为每个人提供所需的参数.