设计模式 Rust 表达

设计模式 Rust 表达

学习设计模式的目标是什么?

在这里不再问为什么学习设计模式,感觉问为什么就是为了要一个答案,而且也显得太宽泛,反而以目标为导向可能是比较简单和具体的。

  1. 如何让程序松耦合
  2. 如何让程序可复用
  3. 如何理解和应用常见的设计模式

用 Rust 的目的是什么?

没有特殊的目的,只是想用 Rust 来表达一下设计模式,Rust 和 C++在底层思维也是差不多的,而设计模式更多的是抽象层面的思维,所以用 Rust 来表达设计模式应该是比较合适的,正好可以根据李老师的课程设计进行展开。

传统的设计模式离不开面向对象设计,那么在 Rust 中怎么表达面向对象的编程风格呢? 对比 C++里面的

  1. 封装
  2. 继承
  3. 多态

Rust 里面也有对应的概念。如何在程序里面表达这些概念呢?

  1. fn,struct/impl 实现封装
  2. impl for , 实现接口继承
  3. trait object, 实现多态

设计模式需要的重要思维

在李老师的课程里面提到了两个概念,一个是分治,一个是抽象。 分治是指把一个大问题分解成若干个小问题,然后再把小问题分解成更小的问题,直到问题可以被解决。抽象是指把一个问题抽象成一个模型,然后再把这个模型实现成一个具体的程序。

这里说“分治”我个人感觉不是最佳的,如果是我会先用用“具体”这个词,这是站在数学的角度,一般我们讨论问都是从具体到一般,这里的一般就是抽象的,泛化的。

我们是如何得到这个抽象的结果呢?我们是通过观察各个具体的情况,然后归纳规律,进而抽象出来的。这里的观察其实可以说和“分治”结合,把一个大问题分解成若干个小问题,然后再把小问题分解成更小的问题,直到问题可以被解决,在解决一个一个小问题的时候去总结发现其中的共性和规律性的东西。