前段时间有个同学参加面试问了抽象工厂和工厂模式的区别,我平常一般用的是简单的工厂模式,对于抽象工厂,基本没有运用到,故而本人也是不知道他俩的区别。而后我果断百度一下,在此我想通过这篇博客来说说我对于其两者之间的理解。
首先是简单工厂模式,简单工厂往往只有一个工厂类(SimpleFactory),但工厂处理的类却有很多。举个例子,比如这里有个菜园工厂类,菜园里可以处理很多蔬菜,例如,青菜,白菜,他们的处理方法大致是一样的,故而可以通过工厂方法进行处理,而一个工厂要处理的类往往有一个公共的接口(Product)。具体框架图如下(不会画图,转载来的):
想必简单工厂模式我们已经有大概的了解了,那么下面我们来说说工厂模式和简单工厂有什么区别呢?工厂模式和简单工厂模式的区别是,简单工厂原本只是可以处理一种类型的产品,就如上面只能处理蔬菜,而工厂方法就如同这个工厂经过发展后,逐步发展壮大,可以处理多种类型的产品(比如一个工厂发展后增加了处理种植果树的技能)。工厂模式如下图,其中:工厂(FactoryMethod),工厂可以处理的产品有两个(可以更多,ConcreateFactoryA,ConcreateFactoryB),至于处理的产品也分为了两类(ConcreateProductA,ConcreateProductB).
这是博主的第一个博客,可能有什么不正确的地方欢迎提出,当然这也是我这个萌新的理解,每一个都会有不同的理解吧,谢谢。