所以我们再重复上面笔记本产品的例子,再建一些其他类,然后也通过工厂类去创建它即可。
抽象工厂先定义一个抽象工厂public abstract class AbstractFactory { public abstract IPhone createPhone(); public abstract ILaptop createLaptop();}1.2.3.4.工厂实现类也就多了一个而已呀~public class HuaweiFactory extends AbstractFactory{ @Override public IPhone createPhone() { return new HuaWeiPhone(); } @Override public ILaptop createLaptop() { return new HuaWeiLaptop(); }}1.2.3.4.5.6.7.8.9.10.11.五、小结在使用工厂模式时,我们可以发现从 简单工厂(非23种) ——》 工厂方法 ——》抽象工厂这是一个不断扩展,解耦的过程,我们可以在项目种根据需要进行选择~比如 产品多的话就选抽象工厂,单一的话就直接用工厂或者简单工厂就可以了至此,我们了解到工厂模式是属于23中设计模式中的创建型模式,主要用途就是创建对象,同时方便程序解耦。
接着,我们再来想想 Spring 中和工厂模式有关的说到这里,你想到什么了呢?不知道的话,就默念 Factory,Factory,Factory,哈哈哈~是不是脑海中一下子浮现出来了这两货BeanFactoryFactoryBean从名字就可以看出这两货和工厂有关 (分别通过 getBean 和 getObject 获取对象)那么我们先来介绍下他们叭六、BeanFactory源码的第一句话The root interface for accessing a Spring bean container. (IOC的根接口)可以发现它是非常核心的组件。
遵循严格的生命周期可以发现,通过 BeanFactory 创建一个 Bean 要经过非常严格的流程处理,很繁琐。
方法方法有很多,比如 获取别名呀,类型呀,是否是单例,原型等通过 getBean 去获取对象主要作用根据 BeanDefinition 生成相应的 Bean 对象。
七、FactoryBean源码可以发现就这么三个方法,一个小工厂通过 getObject 方法来返回一个对象获取对象时:如果 beanName 没有加 & 号,则获取的是泛型T 的对象。
如果添加了 & 号,获取的是实现了 FactoryBean 接口本身的对象,如 EhCacheFactoryBean而正因为它的小巧,它也被广泛的应用在Spring内部,以及Spring与第三方框架或组件的整合过程中。
八、BeanFactory 和 FactoryBean 的区别是什么?BeanFactory 是一个大工厂,是IOC容器的根基,有繁琐的 bean 生命周期处理过程,可以生成出各种各样的 BeanFactoryBean 是一个小工厂,它自己也是一个 Bean ,但是可以生成其他 Bean最后一个问题九、Spring中工厂模式的使用既然都和工厂有关,那么我们就挑个软柿子捏一下FactoryBean工厂模式图可以发现和我们上面介绍的工厂方法模式一样,公共接口和不同的实现类,通过具体的工厂获取对象。
BeanFactory 也是类似的,就不画啦十、总结画个图总结下啦最后Spring相关资料:Spring笔记-176页的知识核心整理另外还整理成了40多套PDF文档:全套的Java面试宝典手册,“性能调优+微服务架构+并发编程+开源框架+分布式”等七大面试专栏,包含Tomcat、JVM、MySQL、SpringCloud、SpringBoot、Dubbo、并发、Spring、SpringMVC、MyBatis、Zookeeper、Ngnix、Kafka、MQ、Redis、MongoDB、memcached等等。
如果你对这个感兴趣,小编可以免费分享。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)