惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

罗磊的独立博客
SecWiki News
SecWiki News
酷 壳 – CoolShell
酷 壳 – CoolShell
爱范儿
爱范儿
量子位
M
MIT News - Artificial intelligence
GbyAI
GbyAI
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
TaoSecurity Blog
TaoSecurity Blog
博客园 - 【当耐特】
H
Heimdal Security Blog
腾讯CDC
The Last Watchdog
The Last Watchdog
Security Archives - TechRepublic
Security Archives - TechRepublic
Hacker News: Ask HN
Hacker News: Ask HN
S
Schneier on Security
Microsoft Security Blog
Microsoft Security Blog
WordPress大学
WordPress大学
博客园 - 司徒正美
Recent Commits to openclaw:main
Recent Commits to openclaw:main
C
Cybersecurity and Infrastructure Security Agency CISA
S
SegmentFault 最新的问题
大猫的无限游戏
大猫的无限游戏
Application and Cybersecurity Blog
Application and Cybersecurity Blog
F
Full Disclosure
有赞技术团队
有赞技术团队
T
Tailwind CSS Blog
Engineering at Meta
Engineering at Meta
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
T
Threatpost
月光博客
月光博客
A
Arctic Wolf
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
雷峰网
雷峰网
T
Troy Hunt's Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
The Cloudflare Blog
D
DataBreaches.Net
O
OpenAI News
L
LINUX DO - 最新话题
宝玉的分享
宝玉的分享
小众软件
小众软件
V
Vulnerabilities – Threatpost
A
About on SuperTechFans
人人都是产品经理
人人都是产品经理
T
The Exploit Database - CXSecurity.com
Martin Fowler
Martin Fowler
美团技术团队
P
Privacy International News Feed

博客园 - 杨连国

win10 IoT开发 Serial​Device 返回 null .NET Delegates: A C# Bedtime Story【转载】 C++ 和 C# 变量定义的一点区别 变量定义 接口(CLR via C# 读书笔记) 生成器模式(builder) 类型和成员基础(CLR via C#) 基本类型、引用类型、值类型——(CLR via C#) 李建忠C#面向对象设计模式纵横谈 —— 单件模式 李建忠C#面向对象设计模式纵横谈 —— 面向对象设计模式与原则 程序设计和重构的目标 OO设计原则——读《你必须知道的.NET》 输入法灰掉bug解决 半角全角Bug解决 由迭代模式想到得——用设计模式理解 .NET ASCII 表设计之妙 调用VC封装的DLL时,两个类型匹配问题 调用非托管Dll Invoke 和 BeginInvoke 的区别
抽象工厂模式(abstract factory)
杨连国 · 2008-06-26 · via 博客园 - 杨连国

之前对抽象工厂模式理解不透彻,困惑,看了李建忠的讲解,收获如下:

        1、单纯从GoF的定义,并不能理解其用意;
   
        2、要从动机去理解,这里有两点:

        一系列相互依赖的对象的创建
        由于需求的变化,存在更多系列对象的创建。

    ------------------------------------------------------------

    李建忠总结要点如下:

    1、如果没有应对“多系列对象构建”的需求变化,则没有必要用抽象工厂模式,这时候使用简单工厂完全可以了。

    2、系列对象指的是这些对象之间有相互依赖或作用的关系。

    3、abstract factory的缺点是难以应对“新对象”的创建,也就是在这一系列的对象确定下来之后,最好就不变了,只是增加不同系列的这些对象,这是其优势所在,如果增减了对象,对该模式反而是灾难。

    ------------------------------------------------------------

    另外个人觉得其引入思路比较好:

    首先是,没有变化,不需要额外封装;
    如果有了变化,哪里有变化,就封装哪里;
    这里抽象工厂模式应对的是对象创建有变化,那就封装对象创建。
    为了实现不依赖于new,出现了工厂,让工厂统一创建对象;
    为了实现对象实例不依赖于具体对象类,出现了抽象对象类,所有具体的对象类都继承于该抽象类。
    同理,为了产生不同系列的对象,需要不同的工厂,那么就可以抽象一个抽象工厂,让所有具体工厂继承于抽象工长,如此一来,客户程序就只依赖于抽象类,并能应对变化了。
    变化不会消失,只会转移,变化到哪去了呢?对抽象工厂的赋值,这里是逃不掉的。

    ------------------------------------------------------------

    最后还是引出GoF的定义:

    提供一个接口,让该接口负责创建一系列“相关或则相互依赖的对象”,而无需指定它们具体的类。
                        ——《设计模式》GoF

    以及其UML图
   
抽象工厂模式