立即学习:https://edu.csdn.net/course/play/28941/403596?utm_source=blogtoedu
工厂方法模式Factory Method Pattern
定义:定义一个创建对象的接口,但让实现这个接口的类来决定实例化哪个类,工厂方法让类的实例化推迟到子类中进行。
属于创建设计模式。
public interface ICourseFactory{
ICourse create();
}
public class JavaCourseFactory implements ICourseFactory{
public ICourse create(){
return new JavaCourse();
}
public class PythonCourseFactory implements ICourseFactory{
public ICourse create(){
return new PythonCourse();
}
}
public interface ICourse{
void record();
}
public class JavaCourse implements ICourse{
public void record(){
System.out.println("录制Java课程");
}
}
public class PythonCourse implements ICourse{
public void record(){
System.out.println("录制Python课程");
}
}
public class Test{
public static void main(String[] args){
ICourseFactory factory = new JavaCourseFactory();
ICourse icourse = factory.create();
icourse.record();
}
}
工厂方法模式适用场景
创建对象需要大量重复代码。
客户端(应用层)不依赖于产品类实例如何被创建,实现等细节。
一个类通过其子类来指定创建哪个对象。
缺点:类的个数容易过多,增加了代码结构的复杂度
增加了系统的抽象性和理解难度。
优点:用户只需要关心所需产品对应的工厂,无需关心创建细节。加入新的产品符合开闭原则,提高了系统的可扩展性。