简单工厂有一个具体的工厂类,可以生产不同的产品,属于创建型设计模式。
注意:简单工厂模式 不属于23种设计模式之列
**简单工厂(SimpleFactory):**是简单工厂模式的核心,负责实现创建所有实例的内部逻辑,工厂类的创建产品类的方法可以被外界直接访问,创建所需的产品对象。
**抽象产品(Product):**是简单工厂创建所有对象的父类,负责描述所有实例公有的公共接口
**具体产品(ConcreteProduct):**是简单工厂创建的具体对象
简单工厂实现:
/**
* 抽象产品,提供所有具体产品的共有的方法
*/
public interface Product {
public void show();
}
/**
* 具体产品1
*/
public class ConcreteProduct1 implements Product {
@Override
public void show() {
System.out.println("具体产品1展示...");
}
}
/**
* 具体产品2
*/
public class ConcreteProduct2 implements Product {
@Override
public void show() {
System.out.println("具体产品2展示...");
}
}
/**
* 简单工厂
*/
public class SimpleFactory {
//提供一个方法,基于不同的参数获取不同的实例对象
public static Product getConcreteProduct(int productType) {
switch (productType) {
case Const.Product1:
return new ConcreteProduct1();
case Const.Product2:
return new ConcreteProduct2();
case Const.Product3:
return new ConcreteProduct3();
}
return null;
}
final class Const {
static final int Product1 = 1;//表示是ConcreteProduct1产品
static final int Product2 = 2;//表示是ConcreteProduct2产品
static final int Product3 = 3;//表示是ConcreteProduct3产品
}
调用方式:
//获取产品1
Product product = SimpleFactory.getConcreteProduct(Const.Product1);
product.show();
//获取产品2
Product product1 = SimpleFactory.getConcreteProduct(Const.Product2);
product1.show();
使用步骤:
优点:
缺点:
对于产品种类比较少的情况,可以考虑使用简单工厂,调用方只需要传入工厂类的参数,不需要关注如何创建的逻辑.
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/qq_45981295/article/details/122362784
内容来源于网络,如有侵权,请联系作者删除!