20220830-三分钟了解Spring的工厂模式

三分钟了解Spring的工厂模式-java4ye

  先看下需要学习哪些内容:

  

 

 

   1,什么是工厂模式?

    据了解,设计模式有23种,抽空,本猫去了解一二。按照功能和使用场景分为3类:

    1,创建型模式

    2,结构型模式

    3,行为型模式

  工厂模式属于创建型模式,主要的工作就是创建对象

  工厂模式原理:

 

 

 

    本猫跟着java4ye前辈:

    一个笔记本电脑的例子:

    1,提供一个返回品牌的接口:

  public interface ILaptop{
       String brand();
  }    

   接口的实现类:两个例子

public class HuaWeiILaptop implements ILaptop{
  @Override
  public String brand(){
     return "HuaWei" ;
  }    
}

public class MacLaptop implements ILaptop {
    @Override
    public String brand() {
        return "Mac";
    }
}

  工厂类:最主要的就是它,我们把创建对象的任务交给他

public class LaptopFactory {

    public static ILaptop createLaptop(String brand){
        switch (brand){
            case "HuaWei":
                return new HuaWeiLaptop();
            case "Mac":
                return new MacLaptop();
            default:
                return null;
        }
    }
}

  测试一次:创建对象只要调用这个工厂就可以了。

public class LaptopMain {
    public static void main(String[] args) {
        ILaptop hw = LaptopFactory.createLaptop("HuaWei");
        String brand = hw.brand();
        System.out.println(brand);
    }
}

  这属于简单工厂模式。下面再看下工厂方法模式

 

 

   1,抽取工厂公共接口:创建对象

public interface ILaptopFactory {
    ILaptop createLaptop();
}

  2,工厂实现类:

  

public class HuaweiLaptopFactory implements ILaptopFactory{
    @Override
    public ILaptop createLaptop() {
        return new HuaWeiLaptop();
    }
}

  3,测试

 HuaweiLaptopFactory huaweiLaptopFactory = new HuaweiLaptopFactory();
 ILaptop mac =  huaweiLaptopFactory.createLaptop();

  这样这个工厂模式就完成创建对象了

  抽象工厂模式

  

 

 

   工厂嘛,肯定不可能只有一条生产线,它肯定还有其他的业务。比如电器,手机,等等

  1,创建一个抽象工厂

  

public abstract class AbstractFactory {
    public abstract IPhone createPhone();
    public abstract ILaptop createLaptop();
}

  2,实现工厂

  

public class HuaweiFactory extends AbstractFactory{
    @Override
    public IPhone createPhone() {
        return new HuaWeiPhone();
    }

    @Override
    public ILaptop createLaptop() {
        return new HuaWeiLaptop();
    }
}

  小结

  在使用工厂模式时,我们可以发现从 简单工厂(非23种) ——》 工厂方法 ——》抽象工厂

  这是一个不断扩展,解耦的过程,我们可以在项目种根据需要进行选择~

  比如 产品多的话就选抽象工厂,单一的话就直接用工厂或者简单工厂就可以了😝

  在Spring中,和工厂模式相关的有什么?本猫想到的是前一篇提到的BeanFactory和FactoryBean

  BeanFactory:

  它是IOC的根接口,核心,核心

  遵循严格的生命周期,生成一个Bean是非常繁琐的

 

 

 

 

  

 

 

 

 

 

   FactoryBean:前边提到过,他是一个小型的工厂,他就只有三个方法:

  

 

 

 

  通过getObject返回一个对象。

  获取对象时:

  如果beanName没有加&,则获取的是泛型T的对象。

  如果添加了&,是获取实现了FactoryBean接口的对象,如 EhCacheFactoryBean

  

   BeanFactory 和 FactoryBean 的区别是什么?

      •     BeanFactory 是一个大工厂,是IOC容器的根基,有繁琐的 bean 生命周期处理过程,可以生成出各种各样的 Bean
      •     FactoryBean 是一个小工厂,它自己也是一个 Bean ,但是可以生成其他 Bea

  Spring中工厂模式的使用

  

 

 

 

 

 

    其实都大同小异了。通过公共接口,不同的实现类。通过具体的工厂创建对象

   最后总结:

 

 

  

posted @ 2022-08-30 17:15  爱吃猫的鱼9527  阅读(18)  评论(0)    收藏  举报