浅谈简单工厂模式

简介: 浅谈简单工厂模式

🚗简单工厂模式

定义

定义一个工厂类,他可以根据参数的不同返回不同类的实例,被创建的实例通常都具有共同的父类

角色

  1. 工厂角色 factory
  2. 抽象产品 product
  3. 具体产品 concreteproduct

模式类图

🍓核心代码类(demo)

举个例子:

告诉工厂需要的手机名称,然后工厂生成手机

类图

我们编写代码的顺序:

Mobile > 具体Product > MobileFactory

Mobile.java 抽象产品

public abstract class Mobile {
    protected String name;
    protected float price;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public float getPrice() {
        return price;
    }
    public void setPrice(float price) {
        this.price = price;
    }
    public abstract void call();
}

MiProduct.java具体产品

public class MiProduct extends Mobile {
    public MiProduct(){
        this.name="Mi";
        this.price=3000;
    }
    @Override
    public void call() {
        System.out.println("我的小米");
    }
}

MobileFactory.java工厂

public class MobileFactory {
    public static Mobile createMobile(String name) {
        Mobile mobile = null;
        if(Objects.equals(name, "Vivo")){
            mobile = new VivoProduct();
        }else if(Objects.equals(name, "Mi")){
            mobile = new MiProduct();
        }
        return mobile;
    }
}

客户端

public class Client {
    public static void main(String[] args) {
        // 1.购买手机
        Mobile m = MobileFactory.createMobile("Vivo");
        // 2.使用手机
        m.call();
    }
}

模式优点

1.对象的创建与使用是分离的

2.客户端无需知道具体产品的类名,只需知道具体产品所对应的参数

模式缺点

  1. 工厂类集中了所有产品的创建逻辑,职责过重,一旦不能正常工作,整个系统都要受到影响
  2. 增加系统中类的个数(引入了新的工厂类),增加了系统的复杂度和理解难度
  3. 系统扩展困难,一旦添加新产品不得不修改工厂逻辑
  4. 由于使用了静态工厂方法,造成工厂角色无法形成基于继承的等级结构,工厂类不能得到很好地扩展

模式适用环境

  1. 工厂类负责创建的对象比较少,这样的话不会造成工厂类业务太复杂
  2. 客户端只知道传入工厂类的参数,对于如何创建对象并不关心

好啦,就到这里啦,简单工厂模式总体来说来说很容易理解的啦,若有疑问的友友欢迎评论区留言额😘

结语


相关文章
|
19天前
|
Java
简单工厂模式
简单工厂模式
19 0
|
19天前
|
Java API 数据库
工厂方法模式
工厂方法模式
20 0
|
4月前
|
C#
C#简单工厂模式
C#简单工厂模式
51 0
|
6月前
|
编译器
简单工厂模式~
简单工厂模式~
|
7月前
浅谈工厂方法模式
浅谈工厂方法模式
|
8月前
|
前端开发
简单工厂模式
简单工厂模式
61 0
|
9月前
|
设计模式 算法 搜索推荐
工厂方法模式的两个极端
概念:是一种常用的对象创建型设计模式,此模式的核心精神是封装类中不变的部分,提取其中个性化善变的部分为独立类,通过依赖注入以达到解耦、复用和方便后期维护拓展的目的。
简单的工厂模式和工厂方法模式
简单的工厂模式和工厂方法模式
|
设计模式 关系型数据库 程序员
简单工厂模式、工厂模式、抽象工厂模式
简单工厂模式、工厂模式、抽象工厂模式
108 2
简单工厂模式、工厂模式、抽象工厂模式
|
设计模式 Java 关系型数据库
JAVA设计模式——工厂模式【简单工厂模式、工厂方法模式、抽象工厂模式】
JAVA设计模式——工厂模式【简单工厂模式、工厂方法模式、抽象工厂模式】
JAVA设计模式——工厂模式【简单工厂模式、工厂方法模式、抽象工厂模式】

热门文章

最新文章