知识卡片

控制器只管数据模型不碰显示重绘

普通读书笔记卡 · 1813.a

内容

Emacs套用MVC模式:模型是缓冲区里的文本数据,视图是负责重绘、更新屏幕显示的引擎,控制器几乎全部由Emacs Lisp实现——键盘、菜单触发的命令都是Lisp函数,负责操纵模型(缓冲区、窗口布局)。重绘代码不受Lisp直接控制,只能通过修改模型间接触发;这种控制器只管数据不管画面的分工,把界面渲染的正确性从每个扩展作者手里收走,交给统一引擎负责。

参考来源

- 位置:《架构之美》第11章《GNU Emacs:滋长的特性是其优势》11.2节《Emacs的架构》(源文件:程序之美系列套装(6册)团队之美、项目管理之美、架构之美、数据之美、测试之美、安全之美/_epub-src/OEBPS/Text/part0236.xhtml) - 结论依据:原文明确"Emacs架构所采用的是……模型-视图-控制器模式……在Emacs中,控制器基本上是完全用Emacs Lisp语言编写的……负责重绘的代码(视图)将完成对显示内容的更新,它无须直接受Lisp代码控制"。 - 原始内容:模型是程序所操作数据的底层描述;视图则是向用户展示数据的方法;而控制器则负责实现用户与视图的交互……在Emacs中,控制器基本上是完全用Emacs Lisp语言编写的……负责重绘的代码(视图)将完成对显示内容的更新,它无须直接受Lisp代码控制。