意图:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。
一、工厂模式与抽象工厂模式区别
抽象工厂模式与工厂模式类似。不过处理的问题更为复杂。工厂模式中我们处理的是不同图形的面积,而在抽象工厂模式中我们添加了不同图形的体积计算。如果我们单考虑体积的计算的话与工厂模式一样处理。但当我们需求如下:在某些计算中我们只需要计算图形面积,而在某些计算中我们只需要计算图形体积。这时我们希望调用某函数后能够根据我们需求要么调用面积工厂,要么调用体积工厂。然后我们根据需求调用对应工厂的某个面积计算类。所以抽象工厂模式其实有一个更高级工厂来生产子工厂。类比如工厂模式的话,我们只是把子工厂按照工厂模式再次进行了包装。
注意:如果我们面对的问题:我们在处理各种不同图形面积或者各种不同图形体积(各个对象的同种属性:也就是要不我们只需计算面积,要不只需计算体积)。而不是我们求解一个图形的面积和体积(同个对象的不同属性:这种问题只需要工厂模式就能够解决。)。
二、抽象工厂代码
代码文件有点多,就不贴出了。
代码链接:c++ codeBlocks,java eclipse