JAVA设计模式中,抽象工厂与工厂方法的区别是什么,两者有什么不同吗?
展开全部
抽象工厂的方法经常以工厂方法的方式实现,两者很容易混淆。他们的工作都是负责创建对象。不同的是工厂方法用的方法是继承过来的,而抽象工厂是通过对象组合。其实整个工厂方法模式,只不过就是通过子类来创建对象。只需知道超类型就可以了,具体的类型由子类负责。在这一点上,抽象工厂表示毫无压力,但是做法不同。抽象工厂提供一个用来创建一个产品家族的抽象类型,这个类型的子类定义了产品被产生的方法。要想使用这个工厂,必须先实例化它(产品家族的抽象类型,通过组合而来)。它的优点是可以把一群相关的产品集合起来,缺点是如果有新产品加入需要修改接口代码,这会涉及到所有子类接口的更改,是一个很繁琐的工作。而工厂方法有点相反,它只是创建一个产品,不需要很大的接口,一个方法就可以了。如果你目前还不知道将来需要实例化哪些类时,也可以使用工厂方法,只要继承它,实现工厂方法就可以了。
举一个例子:如果你有一个超市,只买一种物品,建议用工厂方法。如果有很多物品,就使用抽象工厂。当然,各有各的特点,最终都是学以致用,解决实际问题。很多问题都是结合各种办法解决的。
举一个例子:如果你有一个超市,只买一种物品,建议用工厂方法。如果有很多物品,就使用抽象工厂。当然,各有各的特点,最终都是学以致用,解决实际问题。很多问题都是结合各种办法解决的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2012-05-31
展开全部
楼上答对了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询