工厂方法模式和抽象工厂模式有什么区别。。。可有高手?
这两个模式,整 来整去,发现好像是一回事。。。。
------解决方案--------------------个人觉得 抽象工厂模式 比 工厂方法 更抽象。。。
抽象工厂模式 是把 工厂方法 在封装了一层。
------解决方案--------------------抽象工厂比工程方法层次更深了一步。。。
------解决方案--------------------找个例子对比一下就知道了
可以去看一下
http://kk-kingboy.blog.163.com/blog/static/553545612010084636463/
------解决方案--------------------本来一个工厂里可以造汽车,空调,冰箱。
现在工厂独立了,一个工厂造汽车,另一个工厂造空调,再另外一个工厂造冰箱。。。
我理解的对不。。。
------解决方案--------------------抽象工厂模式是面向接口的,应该更灵活。
------解决方案--------------------工厂模式包括:
1.工厂方法
2.工厂类
3.抽象工厂类和工厂接口。
------解决方案--------------------工厂一般造一种产品
抽象工厂造许多种产品
《head first设计模式》说的很清楚
------解决方案--------------------工厂创建一种产品,抽象工厂创建的是一组产品,是一个产品系列。这里要注意的是“系列”的意思,也就是说,抽象工厂创建出的一组产品是成套的。
当你发现,有一个接口可以有多种实现的时候,可以考虑使用工厂方法来创建实例。
当你返现,有一组接口可以有多种实现方案的时候,可以考虑使用抽象工厂创建实例组。
------解决方案--------------------工厂是一种抽象,将创建对象的过程抽象;而抽象工厂更进一层,把工厂本身都抽象了。
------解决方案--------------------多个工厂搞一起就是抽象工厂
------解决方案--------------------抽象工厂就是你生产产品的时候不知道是那些工厂
------解决方案--------------------工厂方法:定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法使一个类的实例化延迟到其子类;
抽象工厂:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。
------解决方案--------------------抽象工厂比工程方法层次更深了一步。。
------解决方案--------------------15楼的图很好!
单看IBMFactory或者DellFactory, 那就是 工厂方法模式
看整张图,就是 抽象工厂模式。。(就是工厂本身也是抽象的。)
------解决方案--------------------工厂模式(Factory Method Pattern) 系统中需要一个对象,但是有多种类型,或将来很可能需要修改,而且此时还不能决定哪一种类型,这时的做法:
1、为上述所需创建的对象定义一个抽象父类,所有不同类型均继承该抽象父类;
2、在系统中定义一个创建该对象的接口(此接口不一定抽象,可以有默认类型),这个接口可以由系统子类 来具体实现,即上述对象的实现推迟到了子类当中。
3、这样就使得系统中可以针对抽象父类的接口编码,而不依赖于具体类;
类图:
抽象工厂模式(Abstract Factory Pattern) 提供一个“接口”(interface或一个抽象父类,里面有一系列用于 创建对象或设定一些值的其他作用 的接口函数),用于创建相关或依赖对象的家族,用户根据这些抽象接口来编程,而不需要明确指定具体类。
类图:
http://images.cnblogs.com/cnblogs_com/shenfx318/AbstractFactory.jpg
------解决方案--------------------学习一下,我感觉我能分清了,因为研究它们很久,楼主也多看一下例子就可以了
------解决方案--------------------抽象工厂具有更好的扩展性