首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

设计模式之简单工厂模式

工厂,顾名思义,能够生产产品的一个地方。产品,在面向对象中,就是类的实例。所以,“工厂”就是一个能够产生其它类型的对象的类。工厂类设计模式主要有三种,即简单工厂模式,工厂模式,抽象工厂模式三种。本文主要介绍简单工厂模式。由于其简单,很多人都不会将其列为一种设计模式。

简单工厂模式是指专门定义一个工厂类来负责创建产品类的实例,被创建的产品通常都具有共同的父类

该设计模式包含三个角色:

简单工厂(SimpleProductFactory)角色:工厂模式的核心,负责生产具体的产品。工厂类可以被外部用户即客户端调用,创建产品对象,从而实现外部用户即客户端和产品对象的解耦。

抽象产品(Product)角色:简单工厂模式所创建的具体产品对象的父类,负责描述所有产品对象的共有特征。

具体产品(Concrete Product)角色:是指具体的产品,是客户端调用工厂的目的就是获取产品对象,在工厂模式中通常拥有多个具体产品。一般来讲是抽象产品类的子类,实现了抽象产品类中定义的所有接口方法。

可以通过一个例子更好的理解上述内容:

我们有一个水果基类Fruit(抽象产品角色),包涵produce方法 。有两个子类Apple和Banana(具体产品角色),重写produce方法。还有一个工厂类。工厂类(简单工厂角色)有fruitProduce的方法,输入参数为水果的名称。

客户端使用工厂类,通过调用fruitProduce方法来生产水果。

Python代码如下:

有了水果工厂,外部用户即客户端就可以使用水果工厂生成水果了:

那么,简单工厂模式的应用场景呢?对象的创建比较复杂的时候,就可以考虑使用简单工厂模式来实现。

简单工厂模式优点:客户端与工厂进行交互,不再负责生产具体的产品对象,从而实现了解耦合。(单一职责,实现了解耦合)。

简单工厂模式缺点:由于这个工厂类负责全部的具体产品的创建,那么具体产品类特别多时,我们就需要去修改工厂的代码,从而增大了维护难度,这样就违反了设计模式经典的开闭原则

如何克服这个缺点呢?敬请期待设计模式之工厂模式

(完)

看完本文有收获?请转发分享给更多人

关注「Python那些事」,做全栈开发工程师

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180219B05IH800?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券