设计模式系列文章
- Android 设计模式之单例模式
- Android 设计模式之Builder模式
- Android 设计模式之观察者模式
- Android 设计模式之代理模式
- Android 设计模式之装饰模式
- Android 设计模式之外观模式
- Android 设计模式之原型模式
- Android 设计模式之工厂方法模式
- Android 设计模式之策略模式
- Android 设计模式之适配器模式
- Android 设计模式之状态模式
- Android 设计模式之面向对象的六大原则
简单工厂模式又被称作静态工厂方法模式,属于创建型设计模式,但并不属于23种GoF设计模式之一
定义
简单工厂模式属于创建型设计模式,又被称作静态工厂方法模式,这是由一个工厂对象决定创建出哪一种产品类的实例
使用场景
- 工厂类负责创建的对象比较少
- 客户只需要知道传入工厂类的参数,而无需关心创建对象的逻辑
实现
一般分3大模块
- 产品抽象类:负责描述所有产品实例的公共接口
- 具体产品
- 工厂类:简单工厂模式的核心,负责实现创建所有实例的内部逻辑
实现的要点
- 产品抽象类是所有产品实例的父类,要提取出所有产品实例的公共接口
- 工厂类需要对外提供一个创建产品实例的接口
实现方式
- 抽象产品类
public abstract class Product {
/**
* 产品类的抽象方法,由具体的产品类去实现
*/
public abstract void method();
}
- 具体产品类
//产品A
public class ProductA extends Product {
@Override
public void method() {
System.out.println("产品A");
}
}
//产品B
public class ProductB extends Product {
@Override
public void method() {
System.out.println("产品B");
}
}
- 具体工厂
public class ConcreteFactory {
public static Product createProduct(String type) {
Product product = null;
switch (type) {
case "A":
product = new ProductA();
break;
case "B":
product = new ProductB();
break;
}
return product;
}
}
- 调用
ConcreteFactory.createProduct("A").menthod();
总结
- 简单工厂方法比较简单。它使用户根据参数获得对应的实例,避免直接实例化类,降低了耦合性。
- 可实例化的类型在编译期间已经被确定。如果增加新类型,则需要修改工厂类,这样的化就违背了开闭原则。
- 简单工厂需要知道所有要生成的类型,当子类过多或者子类层次过多时不适合使用。而工厂方法模式就没有这个问题
- 可以对照着工厂方法模式来理解对比下:Android 设计模式之工厂方法模式
今天你进步了嘛?欢迎关注我的微信公众号,和我一起每天进步一点点!
AntDream
网友评论