【发布时间】:2014-02-24 22:38:08
【问题描述】:
我一直在考虑为此使用generic factory pattern,但我只是想确保我正确使用它。
首先,由于客户的需要,这必须是基于 Java 的。
我的应用程序可以实例化多个对象,并且每个对象都应该能够在运行时更改类型。例如,变量可以从浮点数开始,转换为 int,然后转换为 char,然后再转换为浮点数。这将是一个基本示例,但可以添加自定义数据类型以获得更多乐趣。
在这种情况下使用通用工厂模式是否正确?或者,有更好的东西吗?对我来说,工厂模式似乎更擅长实例化而不是更新(除非我基本上销毁并重新实例化了变量)。
更多细节:
这是一种进化算法,我不一定知道程序启动时的类型。根据进化的过程,它可能会发现 int 比 float 更可取。
例如,如果我从浮点值 4.34 开始:
// start of program
object var = 4.34;
// evolution running......
...
// evolution determines that var would be better as a float
var.convertToInt();
// var is now an int with a value of 4
我最初的想法是拥有一个通用工厂类型对象,我可以在其中跟踪对象的当前“类型”并返回适当的值。所以一开始它会返回一个float,转换之后会返回一个int转换的值(映射到一个内部的int)。
编辑 2:代码说明。
我想我的观点只是没有通过。这是我希望看到的代码示例。
object var = new object(int, 4); // create int variable with value of 4
// where object is whatever base design pattern i am using here
...
var.toFloat(); // convert var to float, value is now 4.0
System.out.println(var.getValue()); // prints 4.0
...
var.toCustomClass(); // var is now a custom datatype
System.out.println(var.getValue()); // calls the print method of the class
我还应该提到var 的实例需要在整个执行过程中持续存在,因为它是我的进化算法中的一个对象,不能被销毁并重新实例化为其他东西。
【问题讨论】:
-
float类型的变量不能成为int。你的意思是Number?编程接口?控制反转?依赖注入? -
是的,直接不行。但是,对于我的应用程序,我需要转换基本类型并找出一种表示它的方法。
-
我仍然不明白您的期望或您想要做什么。将您的所有引用都设为
Object。 -
添加了更多说明...希望对您有所帮助。
标签: java design-patterns factory