• 【设计模式】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模式中,通常有一个抽象的工厂类和多个具体的工厂子类,每个具体工厂子类负责创建特定类型的对象。这样,客户端代码可以通过与抽象工厂类交互,而不需要关心具体的对象是如何创建的。

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


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

  • 相关阅读:
    Macos视频增强修复工具:Topaz Video AI for mac
    算法补天系列之中级提高班1
    【POJ No. 3984】 迷宫问题
    周赛370(模拟、树形DP(正难则反)、树状数组优化DP)
    ExtJS - UI组件 - Grid
    如何让背景色在任何设备宽高都能填充整个屏幕
    Spring 定时任务如何到达某一指定时间点后,触发任务机制
    一起Talk Android吧(第四百一十九回:让时钟走起来)
    python 通过open api 接口 连续问答gpt
    Openssl
  • 原文地址:https://blog.csdn.net/CSBIGDOG/article/details/139340135