我们拿日常吃的水果举例
首先,我们定义一个父类Fruit
package com.xt.spring.ioc.ore
public class Fruit {
String name;
public void eat(){
System.out.println("我是" + name);
}
}
设计一个实现类实现Fruit
package com.xt.spring.ioc.ore;
public class Apple extends Fruit{
String name = "苹果";
}
Apple类现在作为Fruit类的实现类,现设计一个主类Main,采用默认构造方法实例化Apple
package com.xt.spring.ioc.ore;
public class Main {
public static void main(String args[]){
Apple a = new Apple();
}
}
此种方法可抽象看为顾客自行生产了一个苹果,现在换一种方法,改为工厂生产。设计一个工厂类FruitFactory,包含一个生成水果的方法
package com.xt.spring.ioc.ore;
public class FruitFactory {
public Fruit productFruit(String ft){
switch(ft){
case "apple":
return new Apple();
case "orange":
return new Orange();
default:
return new Banana();
}
}
}
附加在Main中的语句:
FruitFactory ff = new FruitFactory();
Apple a0 = (Apple) ff.productFruit("apple");//将Fruit类强转为Apple
此种方法为工厂自行制造一个苹果供给顾客