17 October 2022

设计模式学习

设计模式是软件开发过程中一些常见问题的解决方案,有助于解决代码设计过程中出现的问题. 23个设计模式最早由四位开发者的《设计模式: 可复用面向对象软件的基础》 中完整的阐释,由于书名太长,后来人们将其简称为四人组的书(Gang of Four). 设计模式相当于定义了一套解决方案的抽象,不同于算法那样明确定义解决觉最终目的的一系列步骤。而设计模式倾向于解决方案的高层次的描述。 设计模式不同于库这样实现好的代码而是一套一般性概念。 设计模式包含的四个核心概念是 1. 意图2. 动机3.结构4.实现 关于设计模式存在一些争议: 1.当编程语言确实必备的抽象功能时,人们才需要设计模式来补充。比如 lamda 函数替换了大部分可能需要使用策略模式的情形.scala 中的object 解决了需要手动实现单例模式的问题.

  1. 设计模式必须合理使用.如果你只有一把铁锤, 那么任何东西看上去都像是钉子。

根据应用的层面可以吧模式分为 惯用技巧(最基础最底层的)和构架模式(最通用最高层的). 根据设计模式的意图分类,可以把设计模式分为三类

  1. 创建型模式(create)
  2. 构造型模式(related)
  3. 行为型模式(communicate)

在个人学习设计模式过程中,发现虽然有过多次学习,但是过不了多久就会忘记。最初学习是为了应对面试,后面学习为了软考,其实最终实际用途是再个人工作和开发过程中使用。许多设计模式因为翻译的问题,术语比较晦涩,比如享元模式,桥接,或者由于术语和生活中的一些例子比较接近的缘故会产出一些不太正确的思想。在设计模式学习中,个人发现许多的设计模式思想在我尚未系统学习之前在开发过程中已经简单使用了,和实际的设计模式的区别在于,我可能没有定义最规范的设计模式接口,而导致我虽然用了设计模式的思想,但在实际应用中,代码仍避免不了不断的修改和层次不清晰等问题,在学习理论过后,个人的编程实践中应该会有更好的提升。如果对设计模式的掌握评分的话,可能是由多方面的维度的。

  1. 实际开发中结合业务的应用
  2. 在理论掌握中,精确的掌握设计模式的各个目标概念。明晰多个容易混淆模式的区别
  3. 在实际开发中按照标准设计模式的模型合理建模
  4. 综合使用多种设计模式以达到最终目的
  5. 在使用设计模式的前提下,写出更好维护,健壮,高内聚低耦合的实际代码 这些维度只要在任意方面有太大短板,就不能发挥出设计模式应有的价值

下面是一些具体的设计模式的一些笔记

示意图

创建性模式