浅谈简单工厂模式

简介: 浅谈简单工厂模式

🚗简单工厂模式

定义

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

角色

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

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

结语


目录
打赏
0
0
0
0
0
分享
相关文章
简单工厂模式详解
简单工厂模式是一种创建型设计模式,通过工厂类决定实例化哪个具体类,降低客户端与具体类之间的耦合。其特点是封装实例化逻辑,但扩展性较弱,增加新产品需修改工厂类代码。适用于客户端需要创建不同种类的对象但不关心具体实现的场景,如日志处理、图形对象创建和支付系统等。示例代码包括 C++ 和 C# 实现。
60 3
|
11月前
|
简单工厂模式
简单工厂模式
52 0
工厂模式中简单工厂模式、工厂方法模式、抽象工厂模式的分析与总结
工厂模式中简单工厂模式、工厂方法模式、抽象工厂模式的分析与总结
|
11月前
|
C#反射机制实现开闭原则的简单工厂模式
C#反射机制实现开闭原则的简单工厂模式
84 0
|
11月前
|
C#
C#简单工厂模式
C#简单工厂模式
109 0
设计模式之工厂模式(简单工厂、工厂方法、抽象工厂)
设计模式之工厂模式(简单工厂、工厂方法、抽象工厂)
110 0
Java设计模式-工厂模式(1)简单工厂模式
Java设计模式-工厂模式(1)简单工厂模式
258 0
Java设计模式-工厂模式(1)简单工厂模式
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等