再推 Raph Levien 的 Towards a unified theory of reactive UI
https://raphlinus.github.io/ui/druid/2019/11/22/reactive-ui.html这老哥后来写了个后续,不过我暂时没太看得懂
https://raphlinus.github.io/rust/druid/2020/09/25/principled-reactive-ui.htmlGUI 这种书难找的原因我猜是不存在一个绝对主流的 pattern 和主流场景,印象中你说的那些“通用”的书,如果是主要面向工程实践的,就必然会受到应用中主流 pattern 和主流场景的影响。受影响较小的“原理和思想”的书基本都是纯理论性的,典型的一个大类是讲算法的书(包括通用算法,密码学算法,图形学算法,视觉算法,AI 算法等 ...),我看了下我的书单,除此之外其他的满足条件的书难找( OS 、数据库和网络大部分书我认为是受到主流 pattern 影响很大的)。
比如你说的“深入浅出面向对象分析与设计”这个书,我大概查了下,感觉主要面向的还是“Java 外包开发”,对其他“非主流”场景不一定适用(就不谈他这个“面向对象”的定义问题了 ...)。实际上像 MVC 、MVVM 这些设计模式已经是一种“通用原理”,但是这些也远远不够“通用”到 cover 整个“主流” GUI 世界的程度,因为 GUI 就不存在“主流”。
GUI 只能在各路通用 pattern 中找出代表性的框架,再针对框架找代表性的书。比如传统 Retained mode GUI 比较典型的 Win32,以及在此基础上的 MFC 、VCL 。加入了更多设计模式的 Cocoa 和 WPF 。Immediate mode 的 Dear ImGui 。最新的是 Raph Levien 所谓“Reactive UI”即 React 、Elm 、Flutter 、SwiftUI 这一代(这个还有很多 open problem )。上面每一组都是完全不同的模式,最多只能做到你学了典型框架 VCL 就大概了解了传统 Retained mode GUI,就好像看了“深入浅出面向对象分析与设计”就大概了解了 Java 的面向对象设计。