浅谈简单工厂模式

简介: 浅谈简单工厂模式

🚗简单工厂模式

定义

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

角色

  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. 客户端只知道传入工厂类的参数,对于如何创建对象并不关心

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

结语


相关文章
|
10天前
|
设计模式 C# 数据库
简单工厂模式详解
简单工厂模式是一种创建型设计模式,通过工厂类决定实例化哪个具体类,降低客户端与具体类之间的耦合。其特点是封装实例化逻辑,但扩展性较弱,增加新产品需修改工厂类代码。适用于客户端需要创建不同种类的对象但不关心具体实现的场景,如日志处理、图形对象创建和支付系统等。示例代码包括 C++ 和 C# 实现。
24 3
|
10天前
|
设计模式 C# C++
工厂方法模式
工厂方法模式是一种创建型设计模式,定义一个创建对象的接口,但让子类决定具体实例化哪个类。该模式具有高内聚、低耦合的特点,支持动态扩展新产品类型,适用于复杂或经常变化的产品族。其主要组成部分包括抽象产品、具体产品、抽象工厂和具体工厂。工厂方法模式遵循开闭原则,新增产品无需修改现有代码,但会增加系统复杂性。
20 5
|
7月前
|
Java
简单工厂模式
简单工厂模式
42 0
|
4月前
|
设计模式 uml
工厂模式中简单工厂模式、工厂方法模式、抽象工厂模式的分析与总结
工厂模式中简单工厂模式、工厂方法模式、抽象工厂模式的分析与总结
|
设计模式 C++
2023-6-10-第一式工厂方法模式
2023-6-10-第一式工厂方法模式
88 0
|
7月前
|
C#
C#简单工厂模式
C#简单工厂模式
97 0
|
编译器
简单工厂模式~
简单工厂模式~
|
前端开发
简单工厂模式
简单工厂模式
88 0
|
设计模式 算法 搜索推荐
工厂方法模式的两个极端
概念:是一种常用的对象创建型设计模式,此模式的核心精神是封装类中不变的部分,提取其中个性化善变的部分为独立类,通过依赖注入以达到解耦、复用和方便后期维护拓展的目的。
|
设计模式 关系型数据库 程序员
简单工厂模式、工厂模式、抽象工厂模式
简单工厂模式、工厂模式、抽象工厂模式
144 2
简单工厂模式、工厂模式、抽象工厂模式