简单工厂模式,又叫静态工厂模式;
通过专门建立一个工厂类根据传入的参数,动态决定创建哪一个产品类的实例,被创建的实例通常有共同的父类;
1、模式中包含的角色及其职责
1)工厂角色(creator):负责实现创建所有实例的内部逻辑;工厂类可以被外界直接调用,创建所需的产品对象;
2)抽象角色(product):模式所创建的所有对象的父类,他负责描述所有实例共有的公共接口;
3)具体产品角色(concrete product):简单工厂模式所创建的具体实例对象;
2、具体程序:
1)抽象角色--Fruit.java 接口
package simplefactory;
public interface Fruit {
public void get();
}
2)工厂角色---FruitFactory
创建指定类的字节码对象 ---> 创建指定类的对象
package simplefactory;
//创建实现某一接口的类的实例
public class FruitFactory {
public static Fruit getFruit(String type) throws InstantiationException, IllegalAccessException, ClassNotFoundException {
Class fruit = Class.forName(type);//type是全限定类名
return (Fruit) fruit.newInstance();
}
}
4)具体产品类
package simplefactory;
public class Apple implements Fruit{
public void get(){
System.out.println("采集苹果");
}
}
package simplefactory;
public class Banana implements Fruit{
public void get(){
System.out.println("采集香蕉");
}
}
5)创建具体产品类实例
package simplefactory;
public class MainClass {
public static void main(String[] args) throws InstantiationException, IllegalAccessException, ClassNotFoundException {
Fruit apple = FruitFactory.getFruit("simplefactory.Apple");
Fruit banana = FruitFactory.getFruit("simplefactory.Banana");
apple.get();
banana.get();
}
}