前言
月是一轮明镜,晶莹剔透,代表着一张白纸(啥也不懂)
央是一片海洋,海乃百川,代表着一块海绵(吸纳万物)
泽是一柄利剑,千锤百炼,代表着千百锤炼(输入输出)
月央泽,学习的一种过程,从白纸->吸收各种知识->不断输入输出变成自己的内容
希望大家一起坚持这个过程,也同样希望大家最终都能从零到零,把知识从薄变厚,再由厚变薄!
一、什么是工厂方法模式?
工厂方法模式是一种常用的类创建型设计模式,次模式的核心精神是封装类中变化的部分,提取其中个性化善变的部分为独立类,通过依赖注入以达到解耦,复用和方便后期维护拓展的目的
二、工厂方法模式的优缺点
优点:
- 可以将对象的创建和使用分离,降低系统的耦合度。
- 可以更方便地扩展和修改系统,增加新的产品类时只需要添加一个具体工厂类即可。
- 可以为系统提供一个统一的接口,使得客户端不需要关心具体的产品类。
缺点
-
增加了代码的复杂性,需要创建多个工厂类来实现不同的产品创建逻辑。
-
工厂方法模式会增加系统中类的数量,增加了系统的复杂性。
-
工厂方法模式的性能可能会受到影响,因为每次创建对象都需要调用工厂方法。
-
工厂方法模式可能会导致代码的重复,因为多个工厂类可能会有相似的实现逻辑。
-
工厂方法模式需要开发人员对系统中的类和接口有深入的了解,否则可能会出现设计错误。
三、工厂方法模式的结构:
抽象工厂角色:是工厂方法的核心
具体工厂角色:实现抽象工厂接口的具体工厂类
抽象产品角色:工厂方法模式所创建的对象的超类型
具体产品角色:实现抽象产品角色所定义的接口
四、工厂方法模式实战
现在以创建车的工厂来实战:
1.创建抽象产品类
2.创建抽闲工厂类
3.创建具体产品类
4.创建具体工厂类
这里只是简单写一个demo,具体使用需要根据实际情况去创建,这里就可以用到单例模式或者多例模式,甚至其他一些,具体情况具体分析.
5.测试使用
6.结果
五.总结
工厂方法模式的应用也十分广泛,包括java的spring框架中的BeanFactory就是一个工厂方法的实现,因此我们在学习的过程中不仅要知道原理,还要思考原理如何应用到实际中.
六.工厂方法模式与抽象工厂模式有什么不同
从本质上来开,工厂方法模式是抽象工厂模式的一个具象,工厂方法模式针对的是一个具体的产品类,而抽象工厂模式则是针对于一组相关的产品类,因此小编就不在赘述抽象工厂模式,因为二者没有本质的区别.uml图都可以套用.