简单工厂,工厂方法,抽象工厂都属于设计模式中的创建型模式。
简单工厂模式:
它的工厂模式的工厂类一般是使用静态方法,通过接受的参数的不同来返回不同的对象实例。
不修改代码的话是无法扩展的。
工厂模式:
定义一个用于创建对象的接口,让子类决定实例化哪一个类。
抽象工厂模式:
为创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体类。
工厂方法模式 |
抽象工厂模式 |
针对的是一个产品等级结构 | 针对的是面向多个产品等级结构 |
一个抽象产品类 | 多个抽象产品类 |
可以派生出多个具体产品类 | 每个抽象产品类可以派生出多个具体产品类 |
一个抽象工厂类,可以派生出多个具体工厂类 | 一个抽象工厂类,可以派生出多个具体工厂类 |
每个具体工厂类只能创建一个具体产品类的实例 | 每个具体工厂类可以创建多个具体产品类的实例 |
举个例子说明下:
用种蔬菜的例子来说明事实,最初的时候,由于规模小,只种植一种蔬菜,根菜类蔬菜,这个时候由于种植方式比较简单,采用简单工厂模式即可,主要目的是让工人轻松,下达工厂种植即可。
但是随着种植厂的发展以及市场的需求,要增加一种蔬菜类型种植了,如茎菜,由于茎菜与根菜种植方式不一致,就需要两个专门的种植工厂来进行管理,那么久采用工厂模式来管理,一个工厂负责一种作物的种植,这个时候产品可以理解为仍然在一个层次。
但是随着科技的发展,我们逐步要种植转基因与非转基因食品了,在以前的蔬菜种类上又增加了一个层次,这个时候无法将其作为一个层次来解决,所以必须采用抽象工厂的方式来解决。