以下都是个人的理解-----
(一)"简单工厂"与"工厂模式"的区别:主要看工厂是否进行了抽象,接口。换言之就是是否有把工厂中的方法抽象出来,简单工厂方法没有抽象出方法,而工厂方法抽象出了方法。以下是接口形状(Shape)和它的具体类圆(Circle)矩形(Square)之间的继承,ArtTrace是一工厂是一个具体工厂,所以,以下是一个简单工厂的模式。如果把ArtTrace抽象成一个接口或者抽象类以下模式则是工厂模式。
(二)“工厂模式”与“抽象工厂模式”的区别:
在了解他们的区别之间有必须对两个概念做进一步的认识,那就是“产品族”和“产品等级”他们很容易区别在模式设计到底用那种工厂方法。
什么是产品族呢?
产品等级:简单的说就是不同类的产品就叫不同的产品族,比如电脑,苹果,桌子……等就是一个产品族。他们的物理特性和外型都不相同。
而什么又是产品等级呢?
产品族:就是同一种东西的不同类型。例如,PC有联想的,IBM,方正……的等等,这些对象就构成一个产品等级。
而抽象工厂模式解决的就是如果产生不同等级,不同产品族的产品(对象)下面是我用JBuilder画出来的UML来方便理解:
图中的结构模仿一个果园,假设果园应该能够出产水果,蔬菜,这时水果和蔬菜就是不同的东西,也即使是前面所说的产品等级;水果和蔬菜分别会有北方的,还会有塑料大棚里面生产的热带水果,蔬菜,这时的分类就是产品等级。而这样的结构就可以用文中提到的抽象工厂模式!
----------------------有时间待续