查看网站是否收录,网站的优化与推广,移动建站平台,什么是可信网站在Unix之失的讨论中#xff0c;我们谈到过X系统的设计者在设计中的基本抉择是实行“机制#xff0c;而不是策略”这种做法——使X成为一个通用图形引擎#xff0c;而将用户界面风格留给工具包或者系统的其它层次来决定。这一点得以证明是正确的#xff0c;因为策略和机制是… 在Unix之失的讨论中我们谈到过X系统的设计者在设计中的基本抉择是实行“机制而不是策略”这种做法——使X成为一个通用图形引擎而将用户界面风格留给工具包或者系统的其它层次来决定。这一点得以证明是正确的因为策略和机制是按照不同的时间尺度变化的策略的变化要远远快于机制。GUI工具包的观感时尚来去匆匆而光栅操作和组合却是永恒的。 所以把策略同机制揉成一团有两个负面影响一来会使策略变得死板难以适应用户需求的改变二来也意味着任何策略的改变都极有可能动摇机制。 相反将两者剥离就有可能在探索新策略的时候不足以打破机制。另外我们也可以更容易为机制写出较好的测试因为策略太短命不值得花太多精力在这上面。 这条设计准则在GUI环境之外也被广泛应用。总而言之这条准则告诉我们应该设法将接口和引擎剥离开来。 实现这种剥离的一个方法是比如将应用按照一个库来编写这个库包含许多由内嵌脚本语言驱动的C服务程序而至于整个应用的控制流程则用脚本来撰写而不是用C语言。这种模式的经典例子就是Emacs编辑器它使用内嵌的脚本语言Lisp解释器来控制用C编写的编辑原语操作。我们会在第11章讨论这种设计风格。 另一个方法是将应用程序分成可以协作的前端和后端进程通过套接字上层的专用应用协议进行通讯我们会在第5章和第7章讨论这种设计。前端实现策略后端实现机制。比起仅用单个进程的整体实现方式来说这种双端设计方式大大降低了整体复杂度bug有望减少从而降低程序的寿命周期成本。