假如你很有钱,在你没有应用工厂模式之前,你的生活方式是这样的:
你要出去,你需要先自己找穿的T恤,裤子、鞋子等。这样肯定很麻烦,什么事都需要亲力亲为。
如果应用了简单工厂模式,就相当于你找了个管家,不过这个管家比较死板,技能比较有限,你告诉他你要什么他就给你什么,有可能他给不了你,假如这个管家只能提供上衣、裤子、鞋子,假如你需要一个公文包怎么办?两个选择,让你的这个管家去补充【修改源代码】,再有一种就是再招一个管家【应用工厂方法模式】,再招的管家和原来的管家都有一个共同的行为,给我提供我需要的东西【共同的行为,可以抽象一个接口,定义一个行为规范】
工厂方法模式,可以简单理解为你有多个管家,每个管家都负责一样事务,负责你上衣的管家,负责你裤子的管家,负责你鞋子的管家,他们都有一个共同的行为,为你提供你需要的东西。如果来了新的需求,比如说需要一个公文包,那你可以直接招一个负责你公文包的管家即可,这个管家必须有为你提供你需要的东西的行为【实现一个共同的接口】,因为他们都是为你服务的。不一定是招管家【产品可以不一样,工厂方法可以允许产品不一样,只要遵循共同的行为规范即可】,可以是找个女朋友,保姆都是可以的。
抽象工厂模式,可以这么理解,你有多个女朋友【抽象工厂,共同的行为,为你提供衣服、裤子、鞋子……】和多个管家【抽象产品,提供衣服或裤子或鞋子】,管家是提供衣服(衣服又包含各种颜色,其他的也是分为各种颜色和大小)、裤子、鞋子、公文包等,你的女朋友【具体的工厂】为你提供某套衣服,比如说上班穿的、参加宴会穿的……具体的管家提供具体的某种产品【衣服或者裤子等】
上面就是我的简单理解。
>>>>什么事都要亲力亲为
>>>>找一个能力有限的管家
>>>>有多个管家,每个管家负责具体的事务
>>>>有女朋友和管家,管家负责提供具体的东西,而女朋友负责帮你搭配组合。