• 全部
  • 问答

为什么说工厂方法是一个类模式而不是对象模式?

find4me 2003-04-09 03:41:10
Factory Method把一个类的实例化延迟到它的子类, 最终返回给用户还是一个类的实例(对象)呀, 哪怎么说它是一个类模式而不是对象模式呢?
...全文
75 点赞 收藏 3
写回复
3 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
find4me 2003-04-09
哦..明白一点, 不过还有一点晕.
不过还是要谢谢你啦!
回复
tinytot 2003-04-09
你可以参看<<设计模式>>那本书,上面有讲解.
上面描述了设计模式的范围准则。"类模式处理类和子类之间的关
系,这些关系通过继承建立,是静态的,在编译时刻便确定下来了。对象模式处理对象间的
关系,这些关系在运行时刻是可以变化的,更具动态性".

Factory Method将对象的部分创建工作延迟到子类,用户可以通过Creator的工厂方法参数化来决定自己要实例化的类对象, 这是静态的, 在程序编译期间已经确定了实例化的类,例如该书上举的那个有关文档的例子, 用户可以通过菜单来选择当前要处理那一种格式的文档, 如果要处理图形文档则可通过Application来来实例化一个处理图形文档的子类, 如要处理文本则可在工厂方法中实例化一个处理文本文档的子类, 把这些处理完全交给子类来完成, 这些代码完全都写在程序里啦,完全是静态的.
而其他的创建型对象模式则将它延迟到另一个对象中。例如抽象工厂, 可以通过抽象工厂中的一个抽象接口来对一系列相同风格的产品进行实例化, 当然各种不同风格的产品都对应一个抽象工厂, 只不过这些抽象工厂都有一个统一的接口, 那么用户则可以通过实例化一个抽象工厂(即先要得到抽象工厂的对象), 把用户想要的产品通过该对象的来实例化出来, 完全不用用户抄心.而通过抽象工厂来实例化产品是在程序运行期间决定的,他是动态的.
这是我得理解, 希望对你有帮助.
回复
find4me 2003-04-09
请高人帮我解答................
回复
相关推荐
发帖
研发管理
创建于2007-08-27

1211

社区成员

软件工程/管理 管理版
申请成为版主
帖子事件
创建了帖子
2003-04-09 03:41
社区公告
暂无公告