【发布时间】:2013-11-30 09:53:21
【问题描述】:
我在理解 OO 模式的工作原理方面遇到了一些问题,我的讲师给了我以下问题,但我思考了一整天后无法解决
我的问题的场景。
有一个名为“ShapeManager”的类来管理 Shape 对象。一个名为“Shape”的类有两个名为“Circle”和“Rectangle”的子类
Shape类的实现如下
abstract public class Shape {
private String id;
private double length;
public Shape() {
}
public Shape(String id , double length) {
this.id = id;
this.length = length;
}
public void setID(String id) {
this.id = id;
}
public String getID() {
return id;
}
public void setLength(double length) {
this.length = length;
}
public double getLength() {
return length;
}
public abstract String getDetails();
}
子类Square如下
public class Square extends Shape{
public Square() {
super();
}
public Square(String id , double side) {
super(id, side);
}
@Override
public String getDetails() {
return "Square => Id : "+getID() +", Side : "+ getLength() + ",Area : "+(getLength() * getLength());
}
}
子类Circle如下
public class Circle extends Shape{
public Circle(){
super();
}
public Circle (String id, double radius) {
super(id, radius);
}
@Override
public String details() {
return "Circle => Id : "+getID() + ", Radius : "+ getLength() + ",Area: "+(3.14*(getLength() * getLength()));
}
}
ShapeManager类如下,这不是一个完整的类
public class ShapeManager {
public Shape createShape() {
}
public void updateLength(String id ){
}
public void deleteShape(String id) {
}
public void listShapes() {
}
}
ShapeManager 与 Shape
有关联ShapeManager --1-----0..*--> 形状
这个包的设计(以上所有类)不能改变,实现必须遵循OCP(Open-Closed Principle)。
我的问题是:我应该如何完成 createShape 方法?如果没有参数,似乎不可能创建一个 Rectangle 或 Circle 对象。
【问题讨论】:
-
@subash 听起来好像没有参数就可以了
-
我认为我在这个问题的最后一行很清楚?
-
告诉你的讲师
Manager是一个糟糕的名字Factory! -
缺少的是
createShape方法应该做的事情。 -
它说它是一个不完整的类。 Narendra,据我所知,ShapeManager 不仅仅是一家工厂。