抽象工厂和简单工厂模式和工厂模式的区别

前段时间有个同学参加面试问了抽象工厂和工厂模式的区别,我平常一般用的是简单的工厂模式,对于抽象工厂,基本没有运用到,故而本人也是不知道他俩的区别。而后我果断百度一下,在此我想通过这篇博客来说说我对于其两者之间的理解。

首先是简单工厂模式,简单工厂往往只有一个工厂类(SimpleFactory),但工厂处理的类却有很多。举个例子,比如这里有个菜园工厂类,菜园里可以处理很多蔬菜,例如,青菜,白菜,他们的处理方法大致是一样的,故而可以通过工厂方法进行处理,而一个工厂要处理的类往往有一个公共的接口(Product)。具体框架图如下(不会画图,转载来的):

抽象工厂和简单工厂模式和工厂模式的区别_第1张图片

想必简单工厂模式我们已经有大概的了解了,那么下面我们来说说工厂模式和简单工厂有什么区别呢?工厂模式和简单工厂模式的区别是,简单工厂原本只是可以处理一种类型的产品,就如上面只能处理蔬菜,而工厂方法就如同这个工厂经过发展后,逐步发展壮大,可以处理多种类型的产品(比如一个工厂发展后增加了处理种植果树的技能)。工厂模式如下图,其中:工厂(FactoryMethod),工厂可以处理的产品有两个(可以更多,ConcreateFactoryA,ConcreateFactoryB),至于处理的产品也分为了两类(ConcreateProductA,ConcreateProductB).

抽象工厂和简单工厂模式和工厂模式的区别_第2张图片

最后说说抽样工厂和工厂方法的区别,抽样工厂就如同一个市场,市场上可以有很多基本功能差不多的工厂,同样可以处理蔬菜或者果树。 注意,工厂模式只有一个工厂,但这个工厂可以处理很多类型的东西,而抽样工厂缺是有很多个工厂,这些工厂处理的类型可能一样,也可能不一样。还是上图吧。如下图,可以看到,下列框架图有 市场(AbstractFactory)很多个工厂(factoryA,factoryB), 以及处理的多个产品(ProductA,ProductB).

抽象工厂和简单工厂模式和工厂模式的区别_第3张图片


 这是博主的第一个博客,可能有什么不正确的地方欢迎提出,当然这也是我这个萌新的理解,每一个都会有不同的理解吧,谢谢。

你可能感兴趣的:(抽象工厂和简单工厂模式和工厂模式的区别)