我需要向用户询问他想绘制的图中有多少边,然后调用正确的构造函数来实例化该对象.
下面是我尝试使用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; }
而让这种工厂方法做出决定.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。