我需要向用户询问他想绘制的图中有多少边,然后调用正确的构造函数来实例化该对象.
下面是我尝试使用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
解决方法
工厂方法
你考虑过Factory Method Pattern吗?基本上,你有一个这样的方法:
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; }
而让这种工厂方法做出决定.