设计模式之工厂方法模式

440 阅读1分钟

工厂方法模式定义

工厂方法模式(Fatory Method Pattern)是指定义一个创建对象的接口,但让实现这个接口的类来决定实例化哪个类,工厂方法让类的实例化推迟到子类中进行。属于创建型模式。

工厂方法模式试用场景

创建对象需要大量重复代码

客户端(应用层)不依赖于产品类实例如何被创建、实现等细节 一个类通过其子类来制定创建哪个对象。

工厂方法模式的优点

用户只需关心所需产品对应的工厂,无需关心创建细节。

加入新产品符合开闭原则,提高了系统的可扩展性。

工厂方法模式的缺点

类的个数容易过多,增加了代码结构的复杂度。

增加了系统的抽象性喝理解难度。

简单工厂模式和工厂方法模式的区别

简单工厂是产品的工厂,工厂方法是工厂的工厂。

一、类图:

image.png

二、产品类(课程)

1、ICouse:课程接口

public interface ICouse {
    void record();
}

2、PythonCouse:Python课程实现类

public class PythonCouse implements ICouse {
    @Override
    public void record() {
        System.out.println("Python课程");
    }
}

3、JavaCouse:Java课程实现类

public class JavaCouse implements ICouse {
    @Override
    public void record() {
        System.out.println("Java课程");
    }
}

三、产品工厂类(课程)

1、ICourseFactory:课程工厂接口

public interface ICourseFactory {
    ICouse create();
}

2、PythonCourseFactory:工厂实现类,Python课程工厂

public class PythonCourseFactory implements ICourseFactory {
    @Override
    public ICouse create() {
        return new PythonCouse();
    }
}

3、JavaCourseFactory:工厂实现类,Java课程工厂

public class JavaCourseFactory implements ICourseFactory {
    @Override
    public ICouse create() {
        return new JavaCouse();
    }
}

四、测试类:

public class Test {
    public static void main(String[] args) {
        JavaCourseFactory javaCourseFactory = new JavaCourseFactory();
        javaCourseFactory.create().record();

        PythonCourseFactory pythonCourseFactory = new PythonCourseFactory();
        pythonCourseFactory.create().record();
    }
}