这可能是一个重复的问题,但我正在学习不同的模式,并试图在我的代码中实现它们。
我试图理解在这个例子中使用哪种模式。我正在考虑使用工厂模式,但这使我对给定的场景感到困惑。我有一个interface Shape和实现类Rectangle和Square
Rectangle & Square类实现了Shape接口中的所有方法。现在,我在Square类中有两个get和set方法。如果我以这种方式使用工厂模式,就会得到异常。
public class Square implements Shape {
public String getSomeField() {
return
}
public void setSomeField() {
//set something
}
}
public class ShapeFactory {
public static Shape getShape(String shape) {
if(shape.equals("rectangle") {
return new Rectangle();
} else {
return new Square();
}
}
}我实例化我的Square类如下:Shape square = ShapeFactory.getShape("square");
因为我有setSomeField()和getSomeField()方法,所以我会得到异常
问题
Square square = (Square)ShapeFactory.getShape("square");发布于 2015-09-03 19:12:55
Shape s = new Square();。如果对象的创建非常复杂,或者工厂需要知道创建了一个对象,那么工厂模式最适合这种情况。例如,如果ShapeFactory必须知道创建了多少个不同类型的形状。它打印:
I'm a Rectangle
I'm a Square发布于 2015-09-04 07:42:59
实际上,这取决于你的设计。任何一种主要的造物模式--都可以根据您的情况需要来完成。如果您不需要每次都获得一个固定对象,那么构建器将为您提供一种流畅的方法来构造Shape对象。查看您的代码(并假设您最终可能有许多参数)如下
public String getSomeField();
public void setSomeField(); 这是一个有待考虑的选择。一个简单的例子是Builder将如何更好地控制施工过程:
public Rectangle getRectangle() {
return new
Rectangle.RectangleBuilder()
.length(60)
.width(30)
.build();
}https://stackoverflow.com/questions/32380657
复制相似问题