• 【设计模式】JAVA Design Patterns——Factory Method(虚拟构造器模式)


    🔍目的


    为创建一个对象定义一个接口,但是让子类决定实例化哪个类。工厂方法允许类将实例化延迟到子类

    🔍解释


    真实世界例子

    铁匠生产武器。精灵需要精灵武器,而兽人需要兽人武器。根据客户来召唤正确类型的铁匠。

    通俗描述

    它为类提供了一种把实例化的逻辑委托给子类的方式。

    维基百科

    在基于类的编程中,工厂方法模式是一种创建型设计模式用来解决创建对象的问题,而不需要指定将要创建对象的确切类。这是通过调用工厂方法创建对象来完成的,而不是通过调用构造器。该工厂方法在接口中指定并由子类实现,或者在基类实现并可以选择由子类重写。

    程序示例

    以上面的铁匠为例,创建铁匠的接口和一些它的实现。

    1. public interface Blacksmith {
    2. Weapon manufactureWeapon(WeaponType weaponType);
    3. }
    4. public class ElfBlacksmith implements Blacksmith {
    5. public Weapon manufactureWeapon(WeaponType weaponType) {
    6. return ELFARSENAL.get(weaponType);
    7. }
    8. }
    9. public class OrcBlacksmith implements Blacksmith {
    10. public Weapon manufactureWeapon(WeaponType weaponType) {
    11. return ORCARSENAL.get(weaponType);
    12. }
    13. }

    现在随着客户的到来,会召唤出正确类型的铁匠并制造出要求的武器。

    1. var blacksmith = new ElfBlacksmith();
    2. blacksmith.manufactureWeapon(WeaponType.SPEAR);
    3. blacksmith.manufactureWeapon(WeaponType.AXE);
    4. // Elvish weapons are created

    🔍类图


    Factory Method pattern class diagram 

    🔍适用场景


    使用工厂方法模式

    • 一个类无法预料它所要必须创建的对象的类
    • 一个类想要它的子类来指定它要创建的对象
    • 类将责任委派给几个帮助子类中的一个,而你想定位了解是具体之中的哪一个

    🔍Ending


    在Factory Method模式中,通常有一个抽象的工厂类和多个具体的工厂子类,每个具体工厂子类负责创建特定类型的对象。这样,客户端代码可以通过与抽象工厂类交互,而不需要关心具体的对象是如何创建的。

    希望本文能够帮助读者更深入地理解工厂方法模式,并在实际项目中发挥其优势。谢谢阅读!


    希望这份博客草稿能够帮助到你。如果有其他需要修改或添加的地方,请随时告诉我。

  • 相关阅读:
    【直播】-ARM异常中断答疑篇-2022/11/07
    数据结构之单链表
    【运维日常】mac刻录ubuntu系统进U盘,插入服务器安装系统
    基于K8s构建Jenkins持续集成平台(部署流程)(转)
    [git] 根据master更新本地分支
    Arduino ESP8266/32 自定义IO组网页状态显示与控制
    第43节——redux介绍
    2023年9月青少年软件编程(Python) 等级考试试卷(三级)
    Vue3组件库项目基础搭建
    MyBatis框架一二级缓存含代码演示
  • 原文地址:https://blog.csdn.net/CSBIGDOG/article/details/139340135