首页 » 技术分享 » 什么是工厂模式

什么是工厂模式

 

工厂模式是用来创建对象的一种最常用的设计模式。我们不暴露创建对象的具体逻辑,而是将逻辑封装在一个函数中,那么这个函数就可以被视为一个工厂。工厂模式根据抽象程度的不同可以分为

  • 简单工厂
  • 工厂方法
  • 抽象工厂

生活中的案例:
*想象一下你的女朋友生日要到了,你想知道她想要什么,于是你问她:“亲爱的,生日要到了你想要什么生日礼物啊?”
正巧你女朋友是个猫奴,最经迷上了抖音上的一只超级可爱的苏格兰折耳猫,她也很想要一只网红同款猫。
于是她回答你说:“亲爱的,我想要一只动物。”
你心平气和的问她:“想要什么动物啊?”
你女友说:“我想要猫科动物。”
这时你内心就纳闷了,猫科动物有老虎,狮子,豹子,猞猁,还有各种小猫,我哪里知道你要什么?
于是你问女友:“你要哪种猫科动物啊?”
“笨死了,还要哪种,肯定是小猫咪啊,难道我们家还能像迪拜土豪那样养老虎啊!”你女朋友答道。
“好好, 那你想要哪个品种的猫呢?”你问道
“我想要外国的品种, 不要中国的土猫” 你女友傲娇的回答到。
这时你已经快奔溃了,作为程序员的你再也受不了这种挤牙膏式的提问,于是你哀求到:“亲爱的,你就直接告诉我你到底想要哪个品种,哪个颜色,多大的猫?”
你女友想了想抖音的那只猫,回答道:“我想要一只灰色的,不超过1岁的苏格兰短耳猫!”
于是,你在女友生日当天到全国最大的宠物批发市场里面去,挑了一只“灰色的,不超过1岁的苏格兰短耳猫”回家送给了你女友, 圆了你女友拥有网红同款猫的梦想!*

上面中你最终买到并送给女友那只猫可以被看作是一个实例,宠物批发市场可以看作是一个工厂,我们可以认为它是一个函数,这个工厂函数里面有着各种各样的动物,那么你是如何获取到实例的呢?因为你给宠物批发市场传递了正确的参数,**“color: 灰色”,“age: 不超过1岁”,”breed:苏格兰短耳”,“category:
猫”**

前面的对话中, 你女朋友回答“动物”,“猫科动物”,“国外的品种”让你不明白她到底想要什么,就是因为她说得太抽象了。她回答的是一大类动物的共有特征而不是具体动物,这种将复杂事物的一个或多个共有特征抽取出来的思维过程就是抽象。

既然已经明白了抽象的概念,下面我们来看一下之前提到的工厂模式的三种实现方法: 简单工厂模式、工厂方法模式、抽象工厂模式。

转载自原文链接, 如需删除请联系管理员。

原文链接:什么是工厂模式,转载请注明来源!

0