【发布时间】:2012-12-02 21:02:51
【问题描述】:
我正在尝试在 Java 中实现工厂模式。 我有一个名为 Shape 的类,其中 Circle 和 Triangle 扩展了。 问题是 Shape 构造函数只获得 2 个参数,而 Circle 获得 3 个参数,Triangle 也是如此(我不会在代码部分显示,因为与 Circle 相同)。 为了更好地展示它:
private interface ShapeFactory{
public Shape create(int x, int y);
}
private class CircleFactory implements ShapeFactory{
public Shape create(float radius, int x, int y){ //error
return new Circle(radius, x,y);
}
}
任何想法如何克服这个问题?我不能从工厂内部接收用户的输入(必须从外部接收)。
谢谢!
【问题讨论】:
-
为什么要使用工厂?你想达到什么目的?
-
认为这不是一个甜蜜的解决方案,您可以传递具体Shape特定参数的添加图。此外:是否需要在创建时提供半径?您可以在创建时设置一些默认半径,然后在创建形状后设置所需的半径。
-
嗯,我想过这个选项,但它与构造函数的想法相矛盾......
-
错误不能出现在您显示的位置。您可能得到的是一个错误,因为您的循环工厂不是抽象的,但是您没有实现
ShapeFactory接口中的任何方法。为什么你认为这个用例需要工厂? -
同意。在这里这样做可能是这样一种情况,即一切都是货物集装箱,由相同的钉子和相同的锤子制成。
标签: java design-patterns factory