Photo :Design Patterns

文 | Edison Zhou

2017年,我开始系统学习设计模式,参考了《大话设计模式》、《设计模式的艺术》等书籍,并通过C#语言写了各种模式的代码示例(已经放到了我的github上并收获了120+个star)。在日常工作上进行Code Review时会时常通过一些学习过的设计模式来指导重构或给出意见,感觉系统学习过和没有学习过还是有一点区别。虽然仍然有很多的遗漏和不足,仍然在此将其总结和优化阅读目录分享给各位有需要的初学者朋友!

1  预备篇

下文来自于一位朋友圣杰,带你通过一个类图在5分钟内熟悉UML类图:

  • UML类图10分钟快速入门

2  创建型模式篇

创建型模式是一类最常用的设计模式,在软件开发中应用非常广泛。创建型模式将对象的创建和使用分离,在使用对象时无需关心对象的创建细节,从而降低系统的耦合度,让设计方案更易于修改和扩展。每一个创建型模式都在试图回答3个问题:3W -> 创建什么(What)、由谁创建(Who)和何时创建(When)。

① 设计模式的征途-01.单例(Singleton)模式

② 设计模式的征途-02.简单工厂(Simple Factory)模式

③ 设计模式的征途-03.工厂方法(Factory Method)模式

④ 设计模式的征途-04.抽象工厂(Abstract Factory)模式

⑤ 设计模式的征途-05.原型(Prototype)模式

⑥ 设计模式的征途-06.建造者(Builder)模式

3  结构型模式篇

结构型模式所描述的是如何将类和对象结合在一起来形成一个更大的结构,它描述两种不同的事物:类和对象,根据这一点,可分为类结构型对象结构型模式。

类结构型模式关心类的组合,由多个类可以组合成一个更大的系统,在类结构型模式中一般只存在继承关系和实现关系;

对象结构型模式关心类与对象的组合,通过关联关系使得在一个类中定义另一个类的实例对象,然后通过该对象调用其方法。

① 设计模式的征途-07.适配器(Adapter)模式

② 设计模式的征途-08.桥接(Bridge)模式

③ 设计模式的征途-09.组合(Composite)模式

④ 设计模式的征途-10.装饰(Decorator)模式

⑤ 设计模式的征途-11.外观(Facade)模式

⑥ 设计模式的征途-12.享元(Flyweight)模式

⑦ 设计模式的征途-13.代理(Proxy)模式

4  行为型模式篇

行为型模式用于描述程序在运行时复杂的流程控制,即描述多个类或对象之间怎样相互协作共同完成单个对象都无法单独完成的任务,它涉及算法与对象间职责的分配。

行为型模式分为类行为模式对象行为模式,前者采用继承机制来在类间分派行为,后者采用组合或聚合在对象间分配行为。由于组合关系或聚合关系比继承关系耦合度低,满足“合成复用原则”,所以对象行为模式比类行为模式具有更大的灵活性。

① 设计模式的征途-14.职责链(Chain of Responsibility)模式

② 设计模式的征途-15.观察者(Observer)模式

③ 设计模式的征途-16.访问者(Visitor)模式

④ 设计模式的征途-17.模板方法(Template Method)模式

⑤ 设计模式的征途-18.策略(Strategy)模式

⑥ 设计模式的征途-19.命令(Command)模式

⑦ 设计模式的征途-20.备忘录(Memento)模式

⑧ 设计模式的征途-21.迭代器(Iterator)模式

⑨ 设计模式的征途-22.中介者(Mediator)模式

⑩ 设计模式的征途-23.解释器(Interpreter)模式

5  代码整洁之道

《代码整洁之道》主要讲述了一系列行之有效的整洁代码操作实践。软件质量,不但依赖于架构及项目管理,而且与代码质量紧密相关。这一点,无论是敏捷开发流派还是传统开发流派,都不得不承认。这本书的阅读对象为一切有志于改善代码质量的程序员,书中介绍的规则均来自作者Bob大叔多年的实践经验,涵盖从命名到重构的多个编程方面,虽为一“家”之言,然诚有可资借鉴的价值。下文是我学习《代码整洁之道》一书的读书笔记以及.NET平台下代码规范插件StyleCop.Analyzer的使用:

  • 《代码整洁之道》(Clean Code) 读书笔记

“细节之中自有天地,整洁成就卓越代码”

参考资料

刘伟,《设计模式的艺术—软件开发人员的内功修炼之道》

程杰,《大话设计模式》

Robert Martin,《代码整洁之道》

示例代码

GitHub:https://github.com/EdisonChou/DesignPattern.Samples.CSharp

The End

「 码字不易,也希望各位看官看完觉得还行就在本文右下方顺手点个“在看”,那就是对我最大的鼓励!如果觉得很好,也可以转发给你的朋友,让更多人看到,独乐乐不如众乐乐,是吧?

往期精彩回顾

.NET Core on K8S学习与实践系列文章索引目录

.NET Core 微服务学习与实践系列文章索引目录

【资料】2019 .NET China Conf 大会资料下载

【视频】2019 .NET China Conf 大会视频发布

2019 .NET China Conf 路一直都在,社区会更好

基于Jenkins的开发测试全流程持续集成实践

基于Jenkins Pipeline的.NET Core持续集成实践

【导读】我读经典,心旷神怡 - 经典书籍读后感汇总

【导读】我的诗和远方 - 也读唐诗与旅游游记汇总

点个【在看】和他人一起分享

【C#】设计模式的学习征途系列文章目录(2019版)相关推荐

  1. RiruEdxposed学习研究系列文章目录

    Riru&Edxposed学习研究(一)手把手安装Edxposed Riru&Edxposed学习研究(二)手把手编译Riru和Edxposed工程源码 Riru&Edxpos ...

  2. 机器学习框架ML.NET学习笔记【1】基本概念与系列文章目录

    一.序言 微软的机器学习框架于2018年5月出了0.1版本,2019年5月发布1.0版本.期间各版本之间差异(包括命名空间.方法等)还是比较大的,随着1.0版发布,应该是趋于稳定了.之前在园子里也看到 ...

  3. 零基础 ABAP 学习教程系列文章的目录

    零基础 ABAP 学习教程系列文章的目录 ABAP 标准培训教程 BC400 学习笔记之一:ABAP 服务器的架构和一个典型的 ABAP 程序结构介绍 ABAP 标准培训教程 BC400 学习笔记之二 ...

  4. [转]《零基础入门深度学习》系列文章(教程+代码)

    无论即将到来的是大数据时代还是人工智能时代,亦或是传统行业使用人工智能在云上处理大数据的时代,作为一个有理想有追求的程序员,不懂深度学习(Deep Learning)这个超热的技术,会不会感觉马上就o ...

  5. .NET Core 微服务学习与实践系列文章目录索引(2019版)

    Photo :.NET Core 文 | Edison Zhou 2018年,我开始学习和实践.NET Core,并开始了微服务的学习,以及通过各种开源组件搭建服务治理技术方案,并在学习过程中总结了一 ...

  6. [毕业生的商业软件开发之路]系列文章目录规划

    目前[毕业生的商业软件开发之路]系列文章规划出的目录如下,希望靠大家一起完善它,有什么意见欢迎跟帖. 第一章 课程背景 高校毕业生就业问题 高校毕业生就业方式 第二章初入职场 课程说明 关于企业培训 ...

  7. 博客园技术系列文章目录

    目录1.5版-2015 05 05 如果大家觉得不全,或者有更好的可以评论里面留言啊,后续还会有2.0  3.0  n.0版本 关于大型网站的思考--夏森 http://www.cnblogs.com ...

  8. Coolite Toolkit学习笔记系列文章

    Coolite Toolkit 是一个支持ASP.NET AJAX的Web控件.它是基于跨浏览器的ExtJS 库开发而来的,并且简化了开发步骤,并且包含有丰富的Ajax运用,同ExtJS 一样都是开源 ...

  9. UnitTest in .NET 系列文章目录

    Photo :.NET单元测试的艺术 文 | Edison Zhou 这几天陆陆续续更新了UnitTest in .NET这个系列的文章,现将其总结成一个小目录.此外,特别推荐阅读Roy Oshero ...

最新文章

  1. BMC Biology:香港城市大学孙燕妮组发表高准确度预测病毒宿主的工具
  2. 对提高squid命中率的一些研究
  3. 1558. 得到目标数组的最少函数调用次数 二进制|思维
  4. android studio python_android studio的安装信息
  5. Lodop输出页面input文本框的最新值
  6. css3 rem的用法
  7. 算法导论——lec 12 平摊分析与优先队列
  8. 在centos 7.0上利用yum一键安装mono
  9. 51.N皇后 (力扣leetcode) 博主可答疑该问题
  10. 计算机软件答辩ppt范文,计算机毕业答辩ppt模板范文.ppt
  11. POI操作Microsoft Office 之 操作PPT简单示例(附源码)
  12. 马克思主义基本原理概论第一章笔记
  13. Linux中缺32位运行库steam,尝试安装Steam错误:您缺少以下32位库,并且Steam可能无法运行:...
  14. JBoss 中间件漏洞
  15. 卸载 SQL Server Management Studio 的操作工具
  16. ​二进制运算符:(与运算)、|(或运算)、~(取反运算)、^(异或运算)、位移运算符​
  17. 华云大咖说 | 华云数据与数科网维携手共建国产云生态
  18. SAP消耗性物料采购前台操作及后台配置
  19. Feedback Prize-Kaggle比赛调研
  20. UIC564-2附录6 –轨道车辆门窗橡胶密封条的阻燃防火测试

热门文章

  1. C#中'??'符的使用
  2. JS设置文本框只能是数字和小数点。
  3. Bye Bye Embed-再见了Embed,符合web标准的媒体播放器代码
  4. fc-ae-1553_什么是AE-L,AF-L和*按钮,它们的作用是什么?
  5. jest忽略如何添加忽略_大多数人忽略的基本家庭维护任务
  6. twitter批量取消关注_如何在Twitter上取消阻止“潜在敏感内容”
  7. drools简单应用
  8. Avalonia Beta 1对WPF做了很多改进
  9. Python入门教程之Python保留字符大全
  10. [从C到C++] 1.3 C++布尔类型(bool)