> 文章列表 > 设计模式 -- 工厂方法模式以及抽象工厂模式

设计模式 -- 工厂方法模式以及抽象工厂模式

设计模式 -- 工厂方法模式以及抽象工厂模式

前言

月是一轮明镜,晶莹剔透,代表着一张白纸(啥也不懂)

央是一片海洋,海乃百川,代表着一块海绵(吸纳万物)

泽是一柄利剑,千锤百炼,代表着千百锤炼(输入输出)

月央泽,学习的一种过程,从白纸->吸收各种知识->不断输入输出变成自己的内容

希望大家一起坚持这个过程,也同样希望大家最终都能从零到零,把知识从薄变厚,再由厚变薄!

一、什么是工厂方法模式

        工厂方法模式是一种常用的类创建型设计模式,次模式的核心精神是封装类中变化的部分,提取其中个性化善变的部分为独立类,通过依赖注入以达到解耦,复用和方便后期维护拓展的目的

二、工厂方法模式的优缺点

优点:

  1. 可以将对象的创建和使用分离,降低系统的耦合度。
  2. 可以更方便地扩展和修改系统,增加新的产品类时只需要添加一个具体工厂类即可。
  3. 可以为系统提供一个统一的接口,使得客户端不需要关心具体的产品类。

缺点

  1. 增加了代码的复杂性,需要创建多个工厂类来实现不同的产品创建逻辑。

  2. 工厂方法模式会增加系统中类的数量,增加了系统的复杂性。

  3. 工厂方法模式的性能可能会受到影响,因为每次创建对象都需要调用工厂方法。

  4. 工厂方法模式可能会导致代码的重复,因为多个工厂类可能会有相似的实现逻辑。

  5. 工厂方法模式需要开发人员对系统中的类和接口有深入的了解,否则可能会出现设计错误。

三、工厂方法模式的结构:

        抽象工厂角色:是工厂方法的核心

        具体工厂角色:实现抽象工厂接口的具体工厂类

        抽象产品角色:工厂方法模式所创建的对象的超类型

        具体产品角色:实现抽象产品角色所定义的接口

四、工厂方法模式实战

现在以创建车的工厂来实战:

1.创建抽象产品类

 2.创建抽闲工厂类

3.创建具体产品类

 

4.创建具体工厂类 

 

 这里只是简单写一个demo,具体使用需要根据实际情况去创建,这里就可以用到单例模式或者多例模式,甚至其他一些,具体情况具体分析.

5.测试使用

6.结果

 

五.总结

        工厂方法模式的应用也十分广泛,包括java的spring框架中的BeanFactory就是一个工厂方法的实现,因此我们在学习的过程中不仅要知道原理,还要思考原理如何应用到实际中.

六.工厂方法模式与抽象工厂模式有什么不同

        从本质上来开,工厂方法模式是抽象工厂模式的一个具象,工厂方法模式针对的是一个具体的产品类,而抽象工厂模式则是针对于一组相关的产品类,因此小编就不在赘述抽象工厂模式,因为二者没有本质的区别.uml图都可以套用.