简单工厂模式
定义
工厂模式可以分为:简单工厂模式、工厂方法模式和抽象工厂模式 我们将被创建的对象称为产品,创建产品的对象称为工厂 如果创建的产品不多,只需要一个工厂就可以,就是简单工厂模式
优缺点
- 优点:
- 工厂类包含必要的逻辑判断,可以决定在什么时候创建哪一个产品的实例。客户端可以免除直接创建产品对象的职责,很方便的创建出相应的产品。工厂和产品的职责区分明确。
- 客户端无需知道所创建具体产品的类名,只需知道参数即可。
- 也可以引入配置文件,在不修改客户端代码的情况下更换和添加新的具体产品类。
- 缺点:
- 工厂类单一,负责所有产品的创建,职责过重,违背高内聚原则
- 扩展难,一旦增加了新的产品需求,就要修改工厂的逻辑
- 简单工厂模式使用static工厂方法,因此不能继承
应用场景
产品品种较少的情况,客户端只需要传入工厂类需要的参数,不用关心如何创建
模式的结构和实现
结构
+ 简单工厂:是该模式的核心,负责创建所有实例的逻辑,可以被外界直接调用,创建产品
+ 抽象产品:是所有产品的父类,负责描述所有实例的公共接口
+ 具体产品:
具体实现
example
/**
* 抽象产品
*/
public interface Product{
void show();
}
/**
* 具体产品1
*/
static class ConcreteProduct1 implements Product{
@Override
public void show(){
System.out.println("具体产品1的show方法");
}
}
/**
* 具体产品2
*/
static class ConcreteProduct2 implements Product{
@Override
public void show(){
System.out.println("具体产品2的show方法");
}
}
/**
* 工厂类
*/
static class SimpleFactory{
public static Product makeProduct(int number){
switch (number){
case 1:
return new ConcreteProduct1();
case 2:
return new ConcreteProduct2();
default:
break;
}
return null;
}
}