学习笔记(6):第2章 架构师内功心法之设计模式 -Simple Factory Pattern简单工厂模式...

立即学习:https://edu.csdn.net/course/play/28941/403595?utm_source=blogtoedu

spring中用到的设计模式——工厂模式BeanFactory。

  1. 简单工厂模式(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;
  }
}

简单工厂模式试用场景

工厂类负责创建的对象较少。

客户端只需要传入工厂类的参数,对于如何创建对象的逻辑不需要关心。

简单工厂的优点

只需传入一个正确的参数,就可以获取你所需的对象,无须知道其创建细节。

缺点:

工厂类的职责相对过重,增加新的产品时需要修改工厂类的判断逻辑,违背开闭原则。

不易于扩展过于复杂的产品结构。

猜你喜欢

转载自blog.csdn.net/weixin_43222122/article/details/107291863