工厂模式分为工厂方法模式和抽象工厂模式两种,而简单工厂模式可以算是工厂方法模式的一个特殊实现吧。
定义:从设计模式的类型上来说,简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。
以上类图和定义来自百度百科。
由类图可以看出来,简单工厂模式总共有三个类,分别为Creator工厂类,IProuct产品接口,Product具体产品的实现,工厂类负责整个生产逻辑的实现,由它来决定到底生产哪个Product。下面举个例子。
产品接口。
package test;
public interface Product {
public void method();
}
两个具体产品的实现。
package test;
public class ProductA implements Product {
@Override
public void method() {
System.out.println("A产品");
}
}
package test;
public class ProductB implements Product {
@Override
public void method() {
System.out.println("B产品");
}
}
工厂类。
package test;
public class Factory {
public static Product createProduct(String name) {
if("A产品".equals(name)) {
return new ProductA();
} else if("B产品".equals(name)) {
return new ProductB();
} else {
return null;
}
}
}
接下来测试一下~
package test;
public class testA {
public static void main(String[] args) {
Product product = Factory.createProduct("A产品");
product.method();
System.out.println("---------------------------------");
product = Factory.createProduct("B产品");
product.method();
}
}
控制台输出
简单工厂模式顾名思义,是一个很简单的工厂模式~
但这个设计模式不满足开闭原则,因为每增加一个Product,都得在工厂里再加一个判断生产该产品。下面一篇介绍的工厂方法模式就是简单工厂模式演化而来的。