Design patterns 设计工厂以创建基类的子类
我正在设计一个显示各种图表的软件,每个图表都使用定义良好的图表相关数据。为数据创建一个基类并从中扩展每个与图表相关的数据似乎是一个好主意,因为它们有很多共同点。为图表定义一个抽象的基础来处理绘图和其他一些功能似乎也是合理的。为了在设计中反映图表数据关系,我使用了模板(Java代码):Design patterns 设计工厂以创建基类的子类,design-patterns,architecture,factory-pattern,software-design,Design Patterns,Architecture,Factory Pattern,Software Design,我正在设计一个显示各种图表的软件,每个图表都使用定义良好的图表相关数据。为数据创建一个基类并从中扩展每个与图表相关的数据似乎是一个好主意,因为它们有很多共同点。为图表定义一个抽象的基础来处理绘图和其他一些功能似乎也是合理的。为了在设计中反映图表数据关系,我使用了模板(Java代码): 公共抽象类ChartData{ ... } 公共抽象类图{ 公开摘要数据(T数据); ... } 公共类ConcreteData扩展了ChartData{ ... } 公共类图表{ 公共void onNewData
公共抽象类ChartData{
...
}
公共抽象类图{
公开摘要数据(T数据);
...
}
公共类ConcreteData扩展了ChartData{
...
}
公共类图表{
公共void onNewData(混凝土数据){
...
}
...
}
这个设计很好,足够灵活,满足我的需要。然而,我从不同的地方(如数据库、网络等)接收图表数据,出于测试目的,我愿意创建一个数据工厂
我正试图想出一个想法:
- 一节课
- 它能够创建扩展ChartData的所有类
- 这是灵活的,所以它不会打破我的设计
解决方案不必是单个方法,但如果它适合单个类,那就太好了。如果我理解正确,我可能会使用反射来避免切换情况。约束条件是每个ChartData类必须有一个无参数构造函数(或者它们都必须有兼容的构造函数) 我的Java有点生锈,但我相信
public T createObject(Class<T> chartDataClass)
{
chartDataClass.newInstance()
}
public T createObject(类chartDataClass)
{
chartDataClass.newInstance()
}
是吗
使用反射并不是我想要的,因为我想要一个独立于语言的体系结构解决方案来解决这个问题。
public T createObject(Class<T> chartDataClass)
{
chartDataClass.newInstance()
}