java – 根据用户输入确定构造函数调用
发布时间:2020-11-17 12:05:07 所属栏目:Java 来源:互联网
导读:我需要向用户询问他想绘制的图中有多少边,然后调用正确的构造函数来实例化该对象. 下面是我尝试使用IF语句来解决答案(或者我可以使用一个开关),但是我不知道这是否是最好的方法,可能是Java继承和多态. 所有的类都扩展了类图. 类别图: --------------- Figure
我需要向用户询问他想绘制的图中有多少边,然后调用正确的构造函数来实例化该对象. 下面是我尝试使用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; } 而让这种工厂方法做出决定. (编辑:台州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |