创建一个Cycle接口及其Unicycle、Bicycle和Tricycle实现。对每种类型的Cycle都创建相应的工厂,然后编写代码使用这些工厂。工厂产生的对象能够被管理,可以输出当前产生的对象总数。
写了我两个小时
package my; public abstract class Factory { int num=0; abstract int getNum(); abstract Cycle produce(); public static Factory createFac(String name){ try { // 通过反射机制获取工厂类 Class c = Class.forName(name); Factory factory = (Factory)c.newInstance(); return factory; } catch (Exception e){ e.printStackTrace(); } return null; } public static void main(String[] args){ //直接根据工厂名创建工厂很方便 Factory unicyclefac=Factory.createFac("my.UnicycleFac"); Cycle uc1=unicyclefac.produce(); Cycle uc2=unicyclefac.produce(); System.out.println(unicyclefac.getNum()); Factory tricycleFac=Factory.createFac("my.TricycleFac"); Cycle tc1=tricycleFac.produce(); System.out.println(tricycleFac.getNum()); } } class UnicycleFac extends Factory{ class Unicycle implements Cycle{ private Unicycle(){} } @Override Cycle produce() { this.num++; return new Unicycle(); } @Override int getNum() { return this.num; } } class TricycleFac extends Factory{ class Tricycle implements Cycle{ private Tricycle(){} } @Override Cycle produce() { this.num++; return new Tricycle(); } @Override int getNum() { return this.num; } } class BicycleFac extends Factory{ class Bicycle implements Cycle{ private Bicycle(){} } @Override Cycle produce() { this.num++; return new Bicycle(); } @Override int getNum() { return this.num; } }
hnh111
package my; public interface Cycle { //由于题目并没有涉及Cycle的功能,所以不需要多配置属性和方法 }