• 工厂模式之简单工厂模式(常用)


    工厂模式的分类

    1. 简单工厂模式
    2. 工厂方法模式
    3. 抽象工厂模式

    简单工厂模式 

            简单工厂模式又称为静态工厂模式,实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类(这些产品类继承自一个父类或接口)的实例。简单工厂模式的创建目标,所有创建的对象都是充当这个角色的某个具体类的实例。

            其实就是将一个具体类的实例化交给一个静态工厂方法来执行,它不属于GOF的23种设计模式,但现实中却经常会用到,而且思想也非常简单。

    简单工厂模式的结构 

            注意:看完三种工厂模式的精讲,我觉得是差不多的,思想也都差不多,主要是理解找个合适的地方的使用。

    工厂角色(Creator)是简单工厂模式的核心,它负责实现创建所有具体产品类的实例。工厂类可以被外界直接调用,创建所需的产品对象。
    抽象产品角色(Product)是所有具体产品角色的父类,它负责描述所有实例所共有的公共接口。
    具体产品角色(Concrete Product)继承自抽象产品角色,一般为多个,是简单工厂模式的创建目标。工厂类返回的都是该

    简单工厂模式的使用场景 

             只有一个工厂类,所以工厂类中创建的对象不能太多,否则工厂类的业务逻辑就太复杂了,不易维护和扩展。另外由于工厂类封装了对象的创建过程,所以客户端不关心对象的创建过程,只需要知道类型就好。

    (1)需要创建的对象较少。  

    (2)客户端只需要知道所需对象的类型。

    简单实例代码

    1. //定义抽象产品类:
    2. public abstract class Product {
    3. public abstract void use();
    4. }
    5. //定义具体产品类:
    6. public class ProductA extends Product {
    7. @Override
    8. public void use() {
    9. System.out.println("使用产品A");
    10. }
    11. }
    12. public class ProductB extends Product {
    13. @Override
    14. public void use() {
    15. System.out.println("使用产品B");
    16. }
    17. }
    18. //定义工厂类:
    19. public class ProductFactory {
    20. public static Product createProduct(String type) {
    21. if ("A".equals(type)) {
    22. return new ProductA();
    23. } else if ("B".equals(type)) {
    24. return new ProductB();
    25. } else {
    26. throw new IllegalArgumentException("产品类型不存在");
    27. }
    28. }
    29. }
    30. //调用客户端创建产品(实例):
    31. public class Client {
    32. public static void main(String[] args) {
    33. Product productA = ProductFactory.createProduct("A");
    34. Product productB = ProductFactory.createProduct("B");
    35. productA.use(); // 输出:使用产品A
    36. productB.use(); // 输出:使用产品B
    37. }
    38. }

     其实有时候看代码能够更清楚的理解定义。

  • 相关阅读:
    HTML 布局
    跑步装备推荐:2022年跑步装备选购清单
    【TypeScript】介绍和环境搭建的详细步骤
    技术分享 | 常用测试策略与测试手段
    linux生成code文件
    php面试常问面试题
    59.【初识JFrame和数据库——聊天系统】
    用 Pytest+Allure 生成漂亮的 HTML 图形化测试报告
    Git子模块使用说明
    Schema_CN28_XRR0追溯运行/反算
  • 原文地址:https://blog.csdn.net/qq_56751933/article/details/134457154