简单工厂模式又称静态工厂方法模式(Static Factory Method Pattern),属于创建模式中的一种。简单地理解,就是有一个类负责对象的创建,类就是一个工厂,你需要的产品就是对象,你可以通过工厂提供的接口获得产品,即对象。
我们以一个动物园的例子来理解。动物园有很多动物,各种动物有不同的叫声,把动物园比喻成一个工厂,各种动物是对象,我们首先定义一个动物的接口,让其他的动物实例都实现它。下面是接口:
public interface Animal {
public void speak();
}
动物实例,比如Dog类:
public class Dog implements Animal{
public void speak() {
System.out.println("我是小狗,我会汪汪叫");
}
}
Sheep类:
public class Sheep implements Animal{
public void speak() {
System.out.println("我是绵羊,我会咩咩叫");
}
}
接下来我们要实现名为ZooFactory的工厂类:
public class ZooFactory {
public static Animal getAnimal(String animal) {
if("Dog".equals(animal)) {
return new Dog();
}
if("Cat".equals(animal)) {
return new Sheep();
}
return null;
}
}
在接下来的程序设计中,如果我们需要得到Dog类的实例或者Sheep的实例,我们可以通过工厂类的静态方法getAnimal(String animal)类获得。比如:
ZooFactory.getAnimal("Dog").speak();
ZooFactory.getAnimal("Cat").speak();
简单工厂模式的优点是实现客户端与服务端的分离,增加新产品的时候不需要修改客户端。缺点是当需要增加新产品的时候,需要修改工程类。