介绍
简单工厂模式就是定义一个工厂接口,将实际工作对象推迟到子类工厂对象中,如果功能不多一个工厂类就可以实现就叫简单工厂模式。被创建的实例有同一个父类。在简单工厂模式中创建实例的方法一般为静态方法,所以简单工厂模式也叫静态方法模式。
简单工厂模式有一个具体的工厂类,可以有多个子类属于创建型设计模式。简单工厂模式不属于GoF 23中设计模式。
优点
- 工厂和产品分工明确,实现了创建和使用分离;
- 使用时不需要知道具体产品类名,只需要知道产品类型。
缺点
- 简单工厂模式工厂类型单一,负责所有工厂类的创建,职责过重,且工厂代码过于臃肿,违背高聚合原则。
- 系统拓展性不好,增加产品就要增加产品类,修改工厂逻辑。
- 简单工厂使用了static工厂方法,造成工厂角色不能形成基于继承的等级结构。
使用场景
对于产品相对较少的情况;
实现
简单工厂模式是由一个抽象产品类、多个具体产品类、创建具体产品类的工厂类构成。
/**
* 抽象产品类
*/
public interface Product {
void info();
}
/**
* 具体产品类 1
*/
public class AirplaneProduct implements Product {
@Override
public void info() {
//处理逻辑
Log.e("test","制造飞机");
}
}
/**
* 具体产品类 2
*/
public class CannonProduct implements Product {
@Override
public void info() {
//处理逻辑
Log.e("test","制造大炮");
}
}
/**
* 简单工厂类
*/
public class SimpleFactory {
public static final int TYPE_AIRPLANNE = 0;
public static final int TYPE_CANNON = 1;
public static Product factoryMake(int type) {
switch (type) {
case TYPE_AIRPLANNE:
new AirplaneProduct();
break;
case TYPE_CANNON:
new CannonProduct();
break;
}
return new CannonProduct();
}
}
学习记录。
版权声明:本文为lhqq_原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。