博客
关于我
创建型模式之简单工厂模式实例及代码操作
阅读量:552 次
发布时间:2019-03-09

本文共 2052 字,大约阅读时间需要 6 分钟。

简单工厂模式(静态工厂方法模式)是一种常用的设计模式,其核心思想是通过工厂类来统一管理创建不同具体产品的逻辑。这种模式在软件开发中广泛应用,特别是在需要动态创建多种对象类型但不希望暴露对象创建细节的场景下。

传统解决方法的缺陷

传统的解决方法通常涉及直接使用new关键字来创建具体的产品类(如MachineGun或Pistol),这种方法存在以下问题:

  • 可维护性差:随着产品种类的增加,代码变得难以管理和维护。
  • 灵活性不足:当需要新增一种武器类型时,必须修改多处代码,导致开发效率低下。
  • 反向兼容性问题:一旦某个具体产品类被修改,所有依赖该类的模块都需要重新编译或测试。

简单工厂模式的概念

简单工厂模式通过引入一个工厂类来统一管理不同产品类的创建过程。工厂类通常提供一个静态方法(如creatWeapon),接受一个参数来指定需要创建的具体产品类型,进而返回对应的产品对象。这种方式的核心优势在于:

  • 代码集中管理:所有与产品创建相关的逻辑集中在工厂类中,避免了代码重复。
  • 易于扩展:新增一种武器类型只需在工厂类中添加相应的判断逻辑即可,无需修改现有代码。
  • 降低依赖风险:客户端代码只需调用工厂类的方法,无需直接依赖具体的产品类实现。

简单工厂模式的结构

简单工厂模式的结构通常包括三部分:

  • 抽象产品类(Product):定义所有具体产品类的公共接口,确保不同产品类之间具有良好的兼容性。
  • 具体产品类(ConcreteProduct):对应于抽象产品类的具体实现,代表实际可以创建的产品实例。
  • 工厂类(Factory):负责根据输入参数创建对应的具体产品实例,实现产品的动态创建逻辑。
  • 简单工厂模式的优点

    相比传统方法,简单工厂模式具有以下优点:

    • 代码简洁:减少了大量重复的new操作,代码更加简洁易读。
    • 易于维护:新增产品类型时,只需在工厂类中添加相应的逻辑,而无需修改其他部分。
    • 提高效率:通过集中管理创建逻辑,减少了调试和维护的难度。
    • 支持动态创建:可以根据不同的参数动态创建不同的对象类型。

    简单工厂模式的应用场景

    简单工厂模式广泛应用于以下场景:

    • 多种产品类型:需要创建多种不同类型的对象,但不希望暴露对象的创建细节。
    • 动态创建对象:需要根据不同的参数或条件动态生成对象实例。
    • 集中管理逻辑:需要统一管理多个不同类别的对象创建过程。

    优化代码实现

    以下是简单工厂模式的优化代码实现:

    // 抽象产品类abstract class Weapon {    abstract void display(); // 显示兵器名称}// 具体产品类class MachineGun extends Weapon {    @Override    void display() {        System.out.println("机光枪");    }}class Pistol extends Weapon {    @Override    void display() {        System.out.println("手枪");    }}// 工厂类class WeaponFactory {    public static Weapon creatWeapon(String type) {        Weapon w = null;        switch (type) {            case "手枪":                w = new Pistol();                break;            case "机关枪":                w = new MachineGun();                break;            default:                System.out.println("不能生产该兵器" + type);        }        return w;    }}// 客户端public class Demo {    public static void main(String[] args) {        Weapon pistol = WeaponFactory.creatWeapon("手枪");        pistol.display();        Weapon mg = WeaponFactory.creatWeapon("机关枪");        mg.display();    }}

    优化后的运行效果

    运行上述代码可以看到以下效果:

    • 当传入"手枪"参数时,会创建并显示"手枪"实例。
    • 当传入"机关枪"参数时,会创建并显示"机光枪"实例。
    • 当传入其他参数时,会输出无法生产的提示信息。

    这种设计方式通过工厂类的统一管理,实现了对武器创建逻辑的集中控制,显著提升了代码的可维护性和扩展性。

    转载地址:http://dappz.baihongyu.com/

    你可能感兴趣的文章
    Windows2016 FTP用户隔离
    查看>>
    js传入参数是中文的时候出现 “******”未定义错误
    查看>>
    responded with a status of 404 ()
    查看>>
    吴恩达机器学习课程笔记(英文授课) Lv.1 新手村(回归)
    查看>>
    pair的用法
    查看>>
    SQL基本操作命令
    查看>>
    强制类型转换原理
    查看>>
    伪类选择器
    查看>>
    两正态总体参数的检验
    查看>>
    C# WinForm程序退出的方法
    查看>>
    ubuntu安装gem和fastlane
    查看>>
    ViroMedia集成android报错Lcom/facebook/react/bridge/WritableMap
    查看>>
    onFailure unexpected end of stream
    查看>>
    android 集成weex
    查看>>
    《C Prime Plus》(第六版) 第03章 编程练习 5 unsigned long int 格式化输出
    查看>>
    【echarts】中国地图china.js 在线引用地址
    查看>>
    Flex 布局的自适应子项内容过长导致其被撑大问题
    查看>>
    PL/SQL 动态Sql拼接where条件
    查看>>
    Lua-table 一种更少访问的安全取值方式
    查看>>
    虚函数
    查看>>