Java基础:简单工厂模式、工厂方法模式和抽象工厂模式综合概述

这篇具有很好参考价值的文章主要介绍了Java基础:简单工厂模式、工厂方法模式和抽象工厂模式综合概述。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

简单工厂模式、工厂方法模式和抽象工厂模式是面向对象设计中用来实现对象创建灵活性的三种不同形式的工厂模式。它们各自有其特点、适用场景及优缺点。以下是它们之间的区别以及对应的适用场景,以及示例说明:

简单工厂模式

定义
简单工厂模式提供一个静态方法或非静态方法,通过接收参数来决定创建并返回何种具体产品对象。这个方法通常存在于一个单独的“工厂”类中,负责处理对象的创建细节。

特点

  • 集中控制对象的创建过程。
  • 适用于创建逻辑相对简单、产品种类数量有限且易于扩展的情况。

适用场景

  • 创建对象的逻辑可能经常变化或者需要在运行时动态决定创建哪种对象。
  • 产品之间存在一定的关联或继承关系,由同一个工厂进行管理。

示例
假设有一个图形绘制应用程序,需要创建不同类型的图形(如圆形、矩形、三角形)。可以定义一个ShapeFactory来根据传入的类型字符串生成相应的Shape对象:

public interface Shape {
    void draw();
}

public class Circle implements Shape {
    @Override
    public void draw() {
        System.out.println("Drawing a circle");
    }
}

public class Rectangle implements Shape {
    @Override
    public void draw() {
        System.out.println("Drawing a rectangle");
    }
}

public class Triangle implements Shape {
    @Override
    public void draw() {
        System.out.println("Drawing a triangle");
    }
}

public class ShapeFactory {
    public static Shape createShape(String shapeType) {
        if ("circle".equals(shapeType)) {
            return new Circle();
        } else if ("rectangle".equals(shapeType)) {
            return new Rectangle();
        } else if ("triangle".equals(shapeType)) {
            return new Triangle();
        } else {
            throw new IllegalArgumentException("Invalid shape type");
        }
    }
}

// 使用
Shape circle = ShapeFactory.createShape("circle");
circle.draw();

工厂方法模式

定义
工厂方法模式定义了一个创建对象的接口,但让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。每个子类对应一种具体的产品,负责创建该产品的实例。

特点

  • 将具体产品的创建延迟到子类中完成,符合“开闭原则”,即对扩展开放,对修改关闭。
  • 适用于产品族内的产品差异较大或产品种类繁多,且需要保持高度解耦。

适用场景

  • 当一个类不知道它所必须创建的对象的类时。
  • 当一个类希望由它的子类来指定它所创建的对象的时候。
  • 当类将创建对象的职责委托给多个帮助子类中的某一个,并且你希望将哪一个帮助子类是代理者这一信息局部化的时候。

示例
继续上述图形绘制应用程序的例子,如果产品种类增加且差异较大,可以采用工厂方法模式。首先定义一个抽象工厂接口和各种图形工厂子类:

public interface ShapeFactory {
    Shape createShape();
}

public class CircleFactory implements ShapeFactory {
    @Override
    public Shape createShape() {
        return new Circle();
    }
}

public class RectangleFactory implements ShapeFactory {
    @Override
    public Shape createShape() {
        return new Rectangle();
    }
}

public class TriangleFactory implements ShapeFactory {
    @Override
    public Shape createShape() {
        return new Triangle();
    }
}

// 使用
ShapeFactory circleFactory = new CircleFactory();
Shape circle = circleFactory.createShape();
circle.draw();

抽象工厂模式

定义
抽象工厂模式提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。客户端使用抽象工厂来创建对象族,而不直接使用具体产品类。

特点

  • 用于创建一族相关或相互依赖的对象(产品族),而不仅仅是一个产品对象。
  • 提供一个高层接口,隐藏产品的具体实现系列,使得客户使用起来更加方便。

适用场景

  • 当一个系统不希望依赖于产品类实例如何被创建、组合和表达的细节时。
  • 当一个系统需要独立于它的产品的创建、组合和表示时。
  • 当一个系统的产品有多于一个的产品族,而系统只消费其中某一族的产品时。

示例
假设图形应用程序除了形状之外,还引入了颜色概念,每种形状可以有不同的颜色(如红色圆形、蓝色圆形)。这时可以定义两个产品族:形状(Circle、Rectangle、Triangle)和颜色(Red、Blue)。抽象工厂模式可以创建这两类产品:

public interface Shape {
    void draw();
}

public class RedCircle implements Shape {
    @Override
    public void draw() {
        System.out.println("Drawing a red circle");
    }
}

public class BlueCircle implements Shape {
    @Override
    public void draw() {
        System.out.println("Drawing a blue circle");
    }

    // 其他形状和颜色的实现...

}

public interface ColorFactory {
    Color getColor();
}

public interface ShapeFactory {
    Shape getShape();
}

public class RedShapeFactory implements ColorFactory, ShapeFactory {
    @Override
    public Color getColor() {
        return new RedColor();
    }

    @Override
    public Shape getShape() {
        return new RedCircle();
    }
}

public class BlueShapeFactory implements ColorFactory, ShapeFactory {
    // 实现相应颜色和形状的创建...
}

// 使用
ShapeFactory redFactory = new RedShapeFactory();
Shape redCircle = redFactory.getShape();
redCircle.draw();

总结来说,简单工厂模式适用于创建对象逻辑较简单且种类有限的情况;工厂方法模式适用于产品族内产品差异较大且需要保持高度解耦的场景;抽象工厂模式则适用于需要创建一族相关或相互依赖的对象(产品族)的情况。选择使用哪种模式取决于实际项目的需求和复杂度。文章来源地址https://www.toymoban.com/news/detail-858156.html

到了这里,关于Java基础:简单工厂模式、工厂方法模式和抽象工厂模式综合概述的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • JavaScript设计模式(二)——简单工厂模式、抽象工厂模式、建造者模式

    个人简介 👀 个人主页: 前端杂货铺 🙋‍♂️ 学习方向: 主攻前端方向,正逐渐往全干发展 📃 个人状态: 研发工程师,现效力于中国工业软件事业 🚀 人生格言: 积跬步至千里,积小流成江海 🥇 推荐学习:🍍前端面试宝典 🍉Vue2 🍋Vue3 🍓Vue2/3项目实战 🥝Node.js🍒

    2024年02月10日
    浏览(31)
  • 【设计模式】单例模式、工厂方法模式、抽象工厂模式

    1. 单例模式 (Singleton Pattern): 场景: 在一个应用程序中,需要一个全局唯一的配置管理器,确保配置信息只有一个实例。 2. 工厂方法模式 (Factory Method Pattern): 场景: 创建一组具有相似功能但具体实现不同的日志记录器。 3. 抽象工厂模式 (Abstract Factory Pattern): 场景: 创建不同

    2024年01月15日
    浏览(45)
  • 常用设计模式(工厂方法,抽象工厂,责任链,装饰器模式)

    有关设计模式的其他常用模式请参考 单例模式的实现 常见的设计模式(模板与方法,观察者模式,策略模式) 定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method使得一个类的实例化延迟到子类。 ——《设计模式》GoF 解决创建过程比较复杂,希望对外隐藏

    2024年01月22日
    浏览(40)
  • 【Java基础教程】(十五)面向对象篇 · 第九讲:抽象类和接口——定义、限制与应用的细节,初窥模板设计模式、工厂设计模式与代理设计模式~

    掌握 抽象类和接口的定义、使用、区别、常见设计模式; 抽象类是代码开发中的重要组成部分,利用抽象类可以明确地定义子类需要覆写的方法,这样相当于在语法程度上对子类进行了严格的定义限制,代码的开发也就更加标准。下面具体介绍抽象类的概念。 普通类可以直

    2024年02月16日
    浏览(34)
  • java设计模式【抽象工厂模式】

    抽象工厂模式 是对简单工厂模式的一个变种,它允许通过一个统一的接口来创建不同的产品实例,而无需指定具体的子类。在这个模式中,我们只关心产品的抽象接口,而将具体的产品实现留给子类去实现。这样,我们可以通过创建不同的工厂对象来创建不同的产品实例,而

    2024年02月05日
    浏览(36)
  • Java设计模式-抽象工厂模式

    设计模式是软件设计中的一种常见方法,通过定义一系列通用的解决方案,来解决常见的软件设计问题。其中,抽象工厂模式是一种非常常见的设计模式,它可以帮助我们创建一组相关的对象,而不需要指定具体的实现方式。 抽象工厂模式是一种创建型设计模式,它提供了一

    2024年02月01日
    浏览(27)
  • java 抽象工厂模式

    抽象工厂模式(Abstract Factory Pattern): 是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 在抽象工厂模式中,接口是负责创建一个相关对象的工厂,不需要显式指定它们的类。

    2024年04月13日
    浏览(22)
  • Java特性之设计模式【抽象工厂模式】

    概述 抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式 在抽象工厂模式中,接口是负责创建一个相关对象的工厂,不需要显式指定它们的类。

    2024年02月10日
    浏览(23)
  • 简单工厂模式概述和使用

    一、简单工厂模式简介 原文链接 1. 定义 简单工厂模式( Simple Factory Pattern ):又称为静态工厂方法(Static Factory Method)模式,它属于类创建型模式。在简单工厂模式中,可以根据参数的不同返回不同类的实例。简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例

    2024年02月10日
    浏览(29)
  • 【Java 设计模式】创建型之抽象工厂模式

    在软件开发中,抽象工厂模式是一种常见的创建型设计模式, 它提供了一种创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类 。抽象工厂模式的核心思想是将一组相关的产品组合成一个工厂,客户端通过工厂接口创建一系列产品。在本文中,我们将介绍 Jav

    2024年01月17日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包