我需要询问用户他想要绘制的图有多少边,然后调用正确的构造函数来实例化对象.
下面是我尝试使用IF语句解决答案(或者我可以使用开关),但我不知道这是否是最好的方法,可能是Java继承和多态.
所有类都扩展了类图.
课程图:
--------------- Figure --------------- ^ ^ ^ ^ | | | | | | | | Circle Triangle Rectangle Exagone
主类:
import java.util.Scanner; class Draw { static void main(String[] args){ Scanner userInput = new Scanner(System.in); int num_sides; //user input System.out.println("How many sides has the figure you want to draw?"); num_sides = userInput.nextInt(); //---> deciding what constructor to call with if statements if(num_sides == 0){ Figure f1 = new Circle(); } else if(num_sides == 3){ Figure f1 = new Triangle(); } //... else{ System.out.println("Error. Invalid sides number"); } } }
课程代码:
class Figure{ private int sides; public Figure(int num_sides){ sides = num_sides; } } class Circle extends Figure{ public Circle(){ super(0); } } //... all the other classes has the same structure of Circle
Caleb Brinkm.. 10
您是否考虑过工厂方法模式?基本上,你有一个类似这样的方法:
public Figure createInstance(int numSides) { Figure figure = null; switch(numSides) { case 0: figure = new Circle(); break; case 3: // etc... // Make a case for each valid number of sides // Don't forget to put a "break;" after each case! default: // Not a valid shape; print your error message } return figure; }
让工厂方法做出决定.
您是否考虑过工厂方法模式?基本上,你有一个类似这样的方法:
public Figure createInstance(int numSides) { Figure figure = null; switch(numSides) { case 0: figure = new Circle(); break; case 3: // etc... // Make a case for each valid number of sides // Don't forget to put a "break;" after each case! default: // Not a valid shape; print your error message } return figure; }
让工厂方法做出决定.