2015-04-13
今天又看了一遍工厂方法,个人的理解是把工厂再抽象了一层,既在简单工厂的基础上,把创建类的工厂再抽象一层。举个例子 ,女娲造人,人又由人工厂创造 , 这个人的工厂就是父类,其子类可以包括 造黄种人的工厂,黑种人的工厂等。
工厂方法经常用在以下两种情况中:
第一种情况是对于某个产品,调用者清楚地知道应该使用哪个具体工厂服务,实例化该具体工厂,生产出具体的产品来。Java Collection中的iterator() 方法即属于这种情况。
第二种情况,只是需要一种产品,而不想知道也不需要知道究竟是哪个工厂为生产的,即最终选用哪个具体工厂的决定权在生产者一方,它们根据当前系统的情况来实例化一个具体的工厂返回给使用者,而这个决策过程这对于使用者来说是透明的。