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生命周期处理过程,可以生成出各种各样的BeanFactoryBean是一个小工厂,它自己也是一个Bean,但是可以生成其他Bea
-
Spring中工厂模式的使用


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

浙公网安备 33010602011771号