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.上面简单工厂类类图
类全路径来创建不同的实例对象类图:

1_工程设计模式-简单工厂设计_第1张图片

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

1_工程设计模式-简单工厂设计_第2张图片

4.简单工厂类总结:

简单工厂概念:

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

    简单工厂创建步骤:

  • 创建抽类并实现抽象类

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

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

你可能感兴趣的:(java_设计模式,设计模式,简单工厂设计)