扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
在本页阅读全文(共2页)
HeadFirst:哦,我明白了,你提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。
Abstract Factory:对。
HeadFirst:那如果说你要扩充这组相关或相互依赖的产品,也就是说增加另外一个成员呢?那样的话就必须改变你的接口了啊?
Abstract Factory:确实是这样,如果新的产品加进来了,我的接口必须改变,我知道人们都不喜欢这样做。。。
Factory Method:(窃笑)。。。
Abstract Factory:工厂方法,你在窃笑什么呢?
Factory Method:哦~~快快行动吧,那可是重要的事啊!改变你的接口那就意味着你必须深入到所以实现了这个接口的子类,然后挨个改变!这看起来可有很多事情要做啊。
Abstract Factory:是的,但是我有一个相对来说范围比较大的接口因为我习惯了从一开始就产生整个产品族。你只是生成一个产品,所以你不须要有一个大的接口,只需在你的抽象类里定义一个这样的方法就行了。
HeadFirst:抽象工厂,我听说你经常用一些factory method来实现你的具体工厂类。
Abstract Factory:嗯,这点我承认。我的那些具体工厂通常实现一个工厂方法来产生他们的具体产品。照我的情况来看,他们现在已经完全习惯产生产品。。。
Factory Method:。。。而按我的情况来看我通常在抽象生产者(角色,抽象类)里实现一部分代码来利用那些子类所产生的具体类(大概是说抽象的工厂类里,这是一个抽象类,不是接口的情况下,有一部分方法不是工厂方法,这些方法是留给那些所有子类用的,因为这是他们所共有的属性或行为)
HeadFirst:听起来你们俩都很擅长各自的工作。我肯定人们喜欢有一个选择的;毕竟,工厂是如此的有用,他们会在各种情况下恰当地使用工厂模式。你们都封装了具体对象的产生过程从而达到应用程序的松耦合而且不依赖于具体的实现,这是相当重要地啊,无论是使用工厂方法还是使用抽象工厂。在最后请你们分别说几句想说的话。
Abstract Factory:谢谢,请记住我,抽象工厂,在下面情况下请记住及时使用我:
Factory Method:我是工厂方法,遇到下面情况,不要犹豫地使用我:
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。