工厂方法模式定义
工厂方法模式(Fatory Method Pattern)是指定义一个创建对象的接口,但让实现这个接口的类来决定实例化哪个类,工厂方法让类的实例化推迟到子类中进行。属于创建型模式。
工厂方法模式试用场景
创建对象需要大量重复代码
客户端(应用层)不依赖于产品类实例如何被创建、实现等细节
一个类通过其子类来制定创建哪个对象。
工厂方法模式的优点
用户只需关心所需产品对应的工厂,无需关心创建细节。
加入新产品符合开闭原则,提高了系统的可扩展性。
工厂方法模式的缺点
类的个数容易过多,增加了代码结构的复杂度。
增加了系统的抽象性喝理解难度。
简单工厂模式和工厂方法模式的区别
简单工厂是产品的工厂,工厂方法是工厂的工厂。
一、类图:
二、产品类(课程)
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();
}
}
复制代码
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END