工厂模式二:
修改factory来使其灵活满足1的要求
缺点:
如果扩充了子类则需要修改工厂,如加了一个樱桃的类,则要修改这个工厂(工厂中没有对这个子类的判断则无法使用)
Code
class Factory {
public static Fruit getFruitInstance(String type) {
Fruit f = null;
if ("Apple".equals(type)) {
f = new Apple();
}
if ("Orange".equals(type)) {
f = new Orange();
}
return f;
}
}
public class factoryDemo2 {
public static void main(String args[]) {
// 以下是以前紧密耦合的工厂使用方法,子类与父类紧紧结合
/**
* Fruit f=new Apple(); f.grow(); f.pick();
*/
// //////////////////////////////
/**
* //下面用上面的类Factory来实现 Fruit f=Factory.getFruitInstance(); f.grow();
* f.pick(); /////////////////////////////
*/
// demo2 中对其进行修改
if (args.length == 0) {
System.out.println("请输入要使用的类名称:");
System.exit(1);
}
Fruit f = Factory.getFruitInstance(args[0]);
if (f != null) {
f.grow();
f.pick();
} else {
System.out.println("没有发现这个类型。");
}
}
}