JAVA大学题目,求完整答案
图形界面都需要显示出来,因此所有是图形界面的元素都有display()方法
定义Component作为图形界面组件接口,含有通用的display()方法。
定义AbstractButton抽象类实现Component接口,本来Button应该还有其他方法的(Click什么的),这里信息太少就不用管它了。
定义LoginForm类实现Component接口,并含有成员button:AbstractButton。
分别定义CircleButton类和RectangleButton继承AbstractButton。
这道题信息太少了,很多东西都要假设...暂时先假设公司在某一段时间只能生产一种盘子...在这里圆形盘子和方形盘子貌似是考察多态的点,就只能按着题目来了...(实际生活中公司可能会有多条生产线同时生产不同的盘子,盘子对于公司来说无论是圆的还是方的,都没有关系,所以没有必要进行抽象...因为盘子本身没有行为)
定义Plate抽象类,木有行为(好奇怪啊),属性给个编号,生产日期。
定义CirclePlate类和SquarePlate类,继承Plate类。CirclePlate类里给个半径属性,SquarePlate给个英寸属性吧,代表对角线长度。(注意,这里不同属性并不代表着一定要进行抽象,使用一个Map来存储一样是可以的。)
定义单例的抽象工厂AbstractPlateFactory:
public abstract class AbstractPlateFactory{
private static AbstractPlateFactory instance;
public synchronized static AbstractPlateFactory getInstance(){
if (instance == null){
instance = newInstance();
}
return instance;
}
private AbstractPlateFactory getInstance(){
//从系统属性中读取工厂类名
String factoryClassName = System.getProperty("company.plate.factory.class");
return Class.forName(factoryClassName).newInstance();
}
public abstract Plate newPlate();
}
定义具体的工厂类CirclePlateFactory和SquarePlateFactory继承AbstractPlateFactory类,各自实现newPlate()方法,按照上面从系统属性中读取具体的半径和英寸值作为生产指标。
最后写个main方法,先用System.setProperty(String name, String value)初始化系统属性(别漏了),然后获取Factory:AbstractPlateFactory.getInstance(),循环调用factory.newPlate()生产盘子就OK了。