第1章 设计模式基础

1.0 引子

       回想学习设计模式的风风雨雨,真是感慨万千。记得大约在广州的一家公司,在抽烟中(建议少抽烟),我和一个技术大牛聊起了软件质量这块,我立即被他的博学多才深深震撼了。这个技术大牛会用生活中的例子和我聊设计模式,通俗易懂,而且很难忘记,我当时就想,如果我也能成为像他这样的大牛该多好。为了心中的理想(成为架构师),我决定发奋图强,秉灯夜烛。经过无数次痛苦并快乐的学习和实践,我终于成长为领导和同事眼中的技术大牛(汗),并幸运地被一家国内知名企业聘为架构师。为了初学者少走弯路,为了中国软件质量(汗),我决定牺牲自己的业余时间撰写博客和录制视频,和大家一起探讨设计模式。特别推荐【研磨设计模式】这本书,我的博客和视频基本上都是以这本书为参考模型。

1.1 设计模式简介

1.1.1 概念

         在软件开发中,经过验证的,用于解决特定环境下、重复出现的、特定问题的解决方案。

下面分别详细描述每个限定词。

在软件开发中:特指后面讨论的设计模式仅限于软件开发领域。其他领域(如建筑行业)的设计模式不在本教程讨论范围内。
经过验证的:是指经过大家认可和公认的,不是某个人的奇思妙想。
特定环境:是指特定的应用上下文环境,脱离这个环境,这个设计模式有可能不成立或者适得其反。
重复出现:只有针对重复出现的问题提出的解决方案才具有更大的应用价值,当再次遇到类似问题,只要复用即可,避免重复发明轮子。
特定问题:说明设计模式不是包治百病的灵丹妙药,不要滥用和误用设计模式。
解决方案:解决问题的方法。

1.1.2 扩展理解

  • 深入理解设计模式内在的思想,不要生搬硬套。
  • 设计模式不是一成不变的,而是在不断发展中,本教程暂介绍常用的23种设计模式。期待更多更优秀的设计模式加入。
  • 设计模式不是软件领域特有的,其他各行各业都有相关的设计模式。

1.1.3 起源

         设计模式最初是由建筑行业的一个名叫Alexander的建筑师发现的。大约在1995年出版的《设计模式—可复用面向对象的基础》从此掀开了软件领域设计模式的序幕。而此书的4位作者被后人称为“四人帮”,也就是大名鼎鼎的GOF(Gang of Four)。

1.2 设计模式组成

1.2.1 基本组成

         针对单个设计模式,本教程采用如下范式来描述。

         模式名称 + 应用场景 + 解决方法 + 注意事项

1.2.2 分类

  • 创建型:如何创建对象。
  • 结构型:组合对象以获取更大对象。
  • 行为型:对象职责划分。

1.3 设计模式学习

1.3.1 意义

  • 软件开发人员交流的“标准词汇”。
  • 提高个人设计和开发的能力。
  • 提高开发效率。
  • 提高产品质量,降低后期维护成本。

1.3.2阶段划分

    初级:了解设计模式的基本知识,能够在实际项目开发中套用。

    中级:可以对设计模式变形使用。

    高级:深入理解设计模式,在实际项目开发中综合运用各种设计模式。

1.3.3 如何学习

  • 准确理解每个设计模式的功能、结构,标准实现、应用场景以及注意事项。
  • 在实际项目开发中,大胆尝试运用设计模式,并不断总结经验。
  • 继续理论学习,并用理论来分析实际项目中运用到的设计模式。
  • 如此不断重复理论和实践的过程,成为高手中的高手,简称高高手。

1.4 本课程注意事项

开发工具:vs2015

开发语言:C++

UML工具:PowerDesigner

      设计模式重在思想,和某种语言关系不大,但为了讲课的效率,采用了c++,因为本人最熟悉的语言就是c++。如果有其他观众需要,我会录制其他语言的视频,比如java、c#等等。

      您的支持就是我最大的动力,后续,我会继续录制重构、duilib库、QT等视频,欢迎大家拍砖。

你可能感兴趣的:(设计模式)