立即学习:https://edu.csdn.net/course/play/28941/403595?utm_source=blogtoedu
spring中用到的设计模式——工厂模式BeanFactory。
- 简单工厂模式(Simple Factory Pattern)是指一个工厂对象决定创建出哪一种产品类的实例。属于创建型模式,但它不属于GOF 23种设计模式。
Course
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 CourseFactory{
public ICourse create(String name){
if("java".equals(name))
return new JavaCourse();
}else if("Python".equals(name))
return new PythonCourse();
else
return null;
}
public class Test{
ICourse course= new CourseFactory().create("java");
course.record();
}
利用java的反射机制优化上述代码工厂的代码。(传值传的是类的全名)
public class CourseFactory{
public ICouse create(String className){
try{
if (!(null == className) || "".equals(className)){
return (ICourse) Class.forName(className).newInstance();
}
}catch(Exception e){
e.printStackTrace();
}
return null;
}
}
spring中的方式(加一个泛型限定)
public class CourseFactory{
public ICourse create(class <? extend ICourse> clazz){
try{
if (null != clazz){
return clazz.newInstance();
}
}catch(Exception e){
e.printStackTrace();
}
return null;
}
}
简单工厂模式试用场景
工厂类负责创建的对象较少。
客户端只需要传入工厂类的参数,对于如何创建对象的逻辑不需要关心。
简单工厂的优点
只需传入一个正确的参数,就可以获取你所需的对象,无须知道其创建细节。
缺点:
工厂类的职责相对过重,增加新的产品时需要修改工厂类的判断逻辑,违背开闭原则。
不易于扩展过于复杂的产品结构。