Day28. 抽象工厂模式

本文同步更新於blog

Abstract Factory Pattern

提供一个接口,用於创建相关或依赖对象的家族,而不需要明确指定具体类。即产品增加产品族的概念。


抽象工厂模式会将类别分为两类:
分别是工厂类别 (Creator)产品类别 (Product)
两者皆有对应的抽象介面。

不同类型的产品结盟成产品族


优点:

  1. 将创建物件的逻辑与物件本身的逻辑分离。
  2. 一个工厂只会对应一个产品族类别,遵守开放封闭原则

缺点:

  1. 会使程序码变得复杂。
  2. 不容易替产品族新增新的产品。(须修改抽象工厂介面)

与其他模式的比较:
[简单工厂模式]:
简单工厂模式仅拥有一个工厂
透过switch子句,创建同种类型不同产品

无法遵守开放封闭原则

[工厂方法模式]: 
工厂方法模式拥有多个工厂
各个工厂创建同种类型不同产品


抽象工厂模式则是拥有多个工厂
各个工厂创建多种类型的产品。
不同类型的产品,有着一条隐密的线,形成产品族的关系。

ʕ •ᴥ•ʔ:把你学会的S.O.L.I.D同时发挥出来。


<<:  JS AJAX基础实作(3) DAY28

>>:  拥抱「资料结构」的「演算法」(29) - 戴克斯特拉演算法求最短路径

[Day9] Face Detection - 使用OpenCV & Dlib:Haar cascades

了解一套工具最好的方法是:动手完成一个现有的范例 了解一门技术最好的方法是:用那套技术完整做出一个...

【Day 28】- 这个验证码有点难破解(应对反爬虫技术-验证码篇)

前情提要 昨天使用了 Dcard 的 API 来爬取 Dcard 上面的文章。 开始之前 各位开始在...

类比数位转换模组

身为一个程序撰写员 所见到的都是数位内容 如果要处理类比的内容,就需要将其转换为数位的,才能使用 像...

【DAY 01】 学习网页的第一步

前言 不管你是不是学程序的,常常都会接触到网页,常常会听到网页就是HTML、CSS和JavaScri...

Day 19 - Socket 连线

Day 19 - Socket 连线 昨天我们讲解了如何让我们能在程序内切换分页,今天我们就换个口味...