首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

类厂模式理解,有错多谢

2012-03-20 
类厂模式理解,有错请指教谢谢看了jixingzhong(瞌睡虫·星辰)对于类厂的描述简单工厂:用来生产同一等级结构

类厂模式理解,有错请指教谢谢
看了jixingzhong(瞌睡虫·星辰)   对于类厂的描述
简单工厂:用来生产同一等级结构中的任意产品。(对于增加新的产品,无能为力)
工厂模式:用来生产同一等级结构中的固定产品。(支持增加任意产品)
抽象工厂:用来生产不同产品族的全部产品。(对于增加新的产品,无能为力;支持增加产品族)
有几个问题,不太理解?
1。简单工厂的实现是什么?他的存在有什么实际意义么?
2。工厂模式既然只能生产固定的产品,直接new   产品不就行了,为什么还要用工厂创建。类厂的出现不就是为了解决代码中使用switch/case结构创建类的问题么?
3。抽象工厂,指的应该是为具体工厂提供一个抽象基类,子类实现基类的CreateProduct方法,同时CreateProduct方法提供参数来区分需要生产的产品,对吧?这种情况下“对于增加新的产品,无能为力”指的是,如果需要新增加产品,必须要修改具体类厂代码,对吧?

[解决办法]
模式也是为了发现变化并且隔离变化。
模式,在里面封装的代码再怎么变化,也对外保持相同的语意。
事实上,很少有实际代码里,有单纯的某厂模式。它们基本上都是组合着出现的。
所以,根本就不要把厂方法分那么细。讨论它们的差别则更没大意义。
[解决办法]
工厂模式没什么好说的。或者不必把它当作一种设计模式。
抽象工厂才是正儿八经的“工厂”,生产一系列互相交互的产品。
[解决办法]
对应用工程师来说, 使用统一的厂方法构建对象, 可以使代码简洁, 干净.减少上层代码修改量.
架构工程师可能根据 需求的变更, 版本的兼容, 在厂方法的构建中 加入一些#if等预编译命令. 如果去掉工厂模式, 把这些操作放到应用里去,不仅代码看上去很冗余,不便于维护.而且应用部分的代码也不利于平台间的移植.

热点排行