1_工程设计模式-简单工厂设计

工程设计模式

一.简单工程设计模式

1.概念

简单工厂模式( Simple Factory Pattern )是指由一个工厂对象决定创建出哪一种产品类的实例

但它不属于 GOF 23 种设计模式。简单工厂适用于工厂类负责创建的对象较少的场景,且客户端只需要传入工厂类的参数,对于如何创建对象的逻辑不需要关心。

2.代码实例【课程录制功能工厂案例】

创建一个抽象类

public interface ICourse {
   
    /** 录制视频 */
    void record();
}

创建抽象实现类

//java课程录制功能
public class JavaCourse implements ICourse {
   
    public void record() {
   
        System.out.println("录制Java课程");
    }
}
//Python课程录制功能
public class PythonCourse implements ICourse {
   
    public void record() {
   
        System.out.println("录制Python课程");
    }
}

创建简单工厂类来,创建对应的对象[这个对象都是抽象类的实现]

public class CourseFactory {
   
    //1.通过标识字符串来创建不同实例实例对象
    public ICourse create(String name){
   
        if("java".equals(name)){
   
            return new JavaCourse();
        }else if("python".equals(name)){
   
            return new PythonCourse();
        }else {
   
            return null;
        }
    }
    //2.根据类全路径来创建不同的实例对象
    public ICourse create(String className){
   
        try {
   
            if (!(null == className || "".equals(className))) {
   
                return (ICourse) Class.forName(className).newInstance();
            }

        }catch (Exception e){
   
            e.printStackTrace();
        }
        return null;
    }
    //3.通过反射来创建不同的实例对象-->推荐使用更简洁
    public ICourse create(Class<? extends ICourse> clazz){
   
        try {
   
            if (null != clazz) {
   
                return clazz.newInstance();
            }
        }catch (Exception e){
   
            e.printStackTrace();
        }
        return null;
    }
}

调用简单的工厂类创建不同的实例对象

public class SimpleFactoryTest {
   
    public static void main(String[] args) {
   
        //使用类全路径来创建不同的实例对象
        ICourseFactory factory = new ICourseFactory();
        ICourse course = factory.create("com.gupaoedu.vip.pattern.factory.JavaCourse");
        course.record();
        
        //通过反射来创建不同的实例对象-->推荐使用更简洁而且不容易错
        CourseFactory factory = new CourseFactory();
        ICourse course = factory.create(JavaCourse.class);
        course.record();
    }
}
3.上面简单工厂类类图
类全路径来创建不同的实例对象类图:

在这里插入图片描述

反射来创建不同的实例对象类图:

在这里插入图片描述

4.简单工厂类总结:

简单工厂概念:

  • 简单工厂创建较少的对象,根据传入的参数获取不同的实例对象。不需要关注创建实例对象逻辑处理过程。

    简单工厂创建步骤:

  • 创建抽类并实现抽象类

  • 根据抽象类,创建对于的简单工厂类[根据字符串标识创建对应的实例对象[易错];根据类路径创建对应实例对象[易错];通过反射创建实例对象;]

  • 调用工厂类创建不同实例对象

相关推荐

  1. 设计模式-简单工厂

    2024-01-08 06:22:01       33 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-08 06:22:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-08 06:22:01       101 阅读
  3. 在Django里面运行非项目文件

    2024-01-08 06:22:01       82 阅读
  4. Python语言-面向对象

    2024-01-08 06:22:01       91 阅读

热门阅读

  1. conda常用命令总结

    2024-01-08 06:22:01       47 阅读
  2. webpack配置入门

    2024-01-08 06:22:01       53 阅读
  3. HTTP一些状态码的记录

    2024-01-08 06:22:01       57 阅读
  4. 认识Git

    认识Git

    2024-01-08 06:22:01      49 阅读
  5. Auto tokenizer和Bert tokenizer的区别

    2024-01-08 06:22:01       63 阅读
  6. 设计模式:桥接模式

    2024-01-08 06:22:01       53 阅读
  7. LDD学习笔记 -- Linux错误码

    2024-01-08 06:22:01       60 阅读
  8. python中闭包的应用

    2024-01-08 06:22:01       54 阅读
  9. keras with pytorch backend : GPU版

    2024-01-08 06:22:01       70 阅读
  10. 洛谷二分题解合集

    2024-01-08 06:22:01       58 阅读
  11. 更加适合CUDA11.2的pytorch显卡版本

    2024-01-08 06:22:01       52 阅读
  12. 深度学习-模型转换_所需算力相关

    2024-01-08 06:22:01       53 阅读
  13. Springboot健康检查机制

    2024-01-08 06:22:01       47 阅读