深度解密Python工厂类相关模式

  • 时间:
  • 浏览:1
  • 来源:5分6合APP下载_5分6合APP官方

@dataclass

class chickenWings(Snack):

2.1.4 饮料生成

@dataclass

class Beverage:

if __name__=="__main__":

@dataclass

class milk(Beverage):

@dataclass

class cheeseBurger(Burger):

@dataclass

class coke(Beverage):

1 实例分析

Python实现工厂类相关模式

2.1 实例分析

工厂类相关的模式在Python底下没人 有点硬的实现法子,亲戚亲戚大伙儿就直接用案例来分析。

@dataclass

class burgerFactory(foodFactory):

@dataclass

class chips(Snack):

1 工厂类相关模式含义

工厂法子模式(英语:Factory method pattern)是某种实现了“工厂”概念的面向对象设计模式。就像某些创建型模式一样,它也是出理 在不指定对象具体类型的情况报告下创建对象的间题。工厂法子模式的实质是“定义另两个多创建对象的接口,但让实现这个 接口的类来决定实例化哪个类。工厂法子让类的实例化推迟到子类中进行。”[1]

创建另两个多对象常常须要错综复杂的过程,某些某些不适合蕴含在另两个多复合对象中。创建对象肯能会导致 几瓶的重复代码,肯能会须要复合对象访问必须的信息,也肯能提供不了足够级别的抽象,还肯能并须要复合对象概念的一主次。工厂法子模式通过定义另两个多单独的创建对象的法子来出理 这个 间题。由子类实现这个 法子来创建具体类型的对象。

对象创建中的某些过程包括决定创建哪个对象、管理对象的生命周期,以及管理特定对象的创建和销毁的概念。

2 工厂类相关模式优点

工厂模式、抽象工厂模式的优点:

1、工厂模式巨有非常好的封装性,代码行态清晰;在抽象工厂模式中,其行态还可不须要随着须要进行更深肯能更浅的抽象层级调整,非常灵活;

2、屏蔽产品类,使产品的被使用业务场景和产品的功能细节可不须要分而开发进行,是比较典型的解耦框架。

3 工厂类相关模式缺点

工厂模式、抽象工厂模式的缺点:

1、工厂模式相对于直接生成实例过程要错综复杂某些,某些某些,在小项目中,可不须要不使用工厂模式;

2、抽象工厂模式中,产品类的扩展比较麻烦。毕竟,每另两个多工厂对应每一类产品,产品扩展,就导致 相应的抽象工厂也要扩展。

4 工厂类相关模式应用

工厂模式、抽象工厂模式的使用场景:

1、当系统实例要求比较灵活和可扩展时,可不须要考虑工厂模式肯能抽象工厂模式实现。比如,

在通信系统中,高层通信协议会很错综复杂,共同,上层协议依赖于下层协议,没人 就可不须要对应建立对应层级的抽象工厂,根据不同的“产品需求”去生产定制的实例。

2.1.1 背景要求

假设亲戚亲戚大伙儿现在须要开发另两个多快餐点餐系统,想必亲戚亲戚大伙儿一定见过同类于麦当劳自助点餐台一类的点餐系统吧。在另两个多大的触摸显示屏上,有三类可不须要挑选的上餐品:汉堡等主餐、小食、饮料。当亲戚亲戚大伙儿挑选好当事人须要的食物,支付完成后,订单就生成了。下面,亲戚亲戚大伙儿用今天的主角--工厂模式--来生成这个 食物的逻辑主体。

BURGER factory produce a instance.

cheese burger 10.0

SNACK factory produce a instance.

chicken wings 12.0

BEVERAGE factory produce a instance.

coke 4.0

在场景中写成如下形式:

spicy_chicken_burger=simpleFoodFactory.createFood(spicyChickenBurger)

也不 ,省去了将工厂实例化的过程。这个 模式就叫做简单工厂模式。

还是在上述例子中,createFood法子中须要传入foodClass才可不须要指定生成的food实例种类,肯能,将每另两个多细致的产品都建立对应的工厂(如cheeseBurger建立对应另两个多cheeseBurgerFactory),也不 ,生成食物时,foodClass也不 必指定。事实上,此时,burgerFactory也不 具体食物工厂的一层抽象。这个 模式,也不 抽象工厂模式。

2.1.3 小食生成

@dataclass

class Snack:

总结

工厂模式也分为简单工厂模式和抽象工厂模式,像下面也不

2.1.6 开使生产

同样,foodFactory为抽象的工厂类,而burgerFactory,snackFactory,beverageFactory为具体的工厂类。

在业务场景中,工厂模式是如可“生产”产品的呢?

@dataclass

class beverageFactory(foodFactory):

2.1.5 实现工厂类

以上的Burger,Snack,Beverage,都可不须要认为是该快餐店的产品,肯能只提供了抽象法子,亲戚亲戚大伙儿把它们叫抽象产品类,而cheese burger等6个由抽象产品类衍生出的子类,叫作具体产品类。

接下来,“工厂”就要突然出现了。

2.1.2 主餐的生成(仅以某种汉堡为例)

@dataclass

class Burger:

@dataclass

class foodFactory:

class simpleFoodFactory:

@dataclass

class snackFactory(foodFactory):

@dataclass

class spicyChickenBurger(Burger):

猜你喜欢

为什么我家的的wifi信号满格,手机能显示信号,但就和没连一样 不能用,为什么

很高兴为你服务至于你的间题,很简单,只有三个白多多将会性愿因分析,展开完整版展开完整版使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。怪怪的推荐扫描二维

2020-02-20

家里网络能看电视,手机却经常连不上网,是路由器的原因吗

采纳数:40527获赞数:106725展开完正你对这些回答的评价是?收起更多回答(1)可选中俩个 或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问提。展开完

2020-02-20

游客esqfqydq476om的主页

文章:0丨粉丝:7339丨话题:0文章:1丨粉丝:38663丨话题:0数据库,NoSQLKubernetes、Docker、调度、里边件文章:104丨粉丝:8129丨话题:1阿

2020-02-20

复旦博士给机器人当语言老师,教出了英语四级水平的“阿里小蜜“

“在阿里,服务体量广,业务场景多,人工智能有更多的发挥空间,我的工作也更有价值。”Peter说。谁也想没办法,2017年3月,这人 复旦博士回国做的第一件事,是加入阿里巴巴集

2020-02-20

官方 | 从机器翻译到阅读理解,一文盘点PaddlePaddle九大NLP模型

近日,百度PaddlePaddle开源了语义表示模型ERNIE,在多个中文NLP任务上表现超越了谷歌的BERT,展示了百度在NLP技术的领先能力,同时也表明PaddlePadd

2020-02-20