为什么要叫工厂模式呢?就是为了生产对象!一个对象的创建过程比较复杂的时候,就可以使用工厂模式来创建对象。
工厂不是new一个对象,而是创建对象的过程,比方说new这个对象之前有100多行的准备工作,比较复杂,就可以交给工厂来做。
Springcore的核心就是工厂模式,隐藏了创建对象的过程
SpringAOP的核心设计模式是代理模式
SpringMVC的核心设计模式是观察者模式
问题:有了factoryMethod为什么还要abstractFactory?
我的答案:在factoryMethod当中,工厂中除了有生产对象的工厂方法外还有自己的业务逻辑,扩展的方式只能是通过继承该类来扩展,而在abstractFactory当中,将该工厂方法抽象出一个接口,包含有生产对象的工厂方法,将自己的业务逻辑剔除出去放到一个调用的A类当中,这样做的好处是避免了通过继承来扩展工厂方法,而是采用聚合的方式来实现。
其实就是将AB两个类拆成了AIB三个,不在使用继承的方式,而是采用聚合的方式。
简单工厂:其实不算是一种设计模式,所以更应该说工厂模式有两种,即以下两种。
工厂方法(factoryMethod):
抽象工厂(abstractFactory):
One uses inheritance and one uses composition.
One
creates only one product and the other creates a family of products.
One makes
use of the concrete types the subclasses create and the other's methods are
purely implemented to create products.