简单工厂模式(Simple Factory Pattern
)
意图
定义一个工厂类来负责创建出不同产品类的实例。
动机
当代码使用大量的具体类时,一旦加入新的具体类,就必须修改代码。也就是说,代码并非"对修改关闭"。我们可以用简单工厂将实例化具体类的代码(会变化的方面)从应用中抽离,或封装起来。
适用性
描述模式可以用在什么场合。
结构

实现
// 抽象产品
public interface Product {
void show();
}
// 具体产品A
public class ConcreteProductA implements Product {
@Override
public void show() {
System.out.println("具体产品A。。。");
}
}
// 具体产品A
public class ConcreteProductB implements Product {
@Override
public void show() {
System.out.println("具体产品B。。。");
}
}
// 简单工厂
public class SimpleFactory {
// 若用静态方法定义的简单工厂称为静态工厂
public Product createProduct(int type) {
if (type == 1) {
return new ConcreteProductA();
} else if (type == 2) {
return new ConcreteProductB();
}
}
}
// 测试客户端
public class TestClient {
public static void main(String[] args) {
/*int type = 1;
Product product;
if (type == 1) {
product = new ConcreteProduct1();
} else if (type == 2) {
product = new ConcreteProduct2();
} else {
product = new ConcreteProduct();
}*/
// 用简单工厂封装实例化具体类的代码
SimpleFactory simpleFactory = new SimpleFactory();
Product product = simpleFactory.createProduct(1);
product.show();
}
}
已知应用
相关模式
工厂方法模式、抽象工厂模式。
参考资料
- 《
Head First
设计模式》 - 图说设计模式
- Java设计模式:23种设计模式全面解析(超级详细)