软件设计的核心:
通过设计稳定的接口,分隔系统各部分(上下层次:上层应用逻辑/底层核心支撑框架;平行的层次:模型/视图/控制器),让各部分独立的变化。
接口在软件设计中至关重要,设计良好,稳定可靠,高内聚低耦合,可扩展性强的接口能保证软件稳定的进展升级。
软件架构其实就是接口的设计。
设计模式的核心思想:
1.分析系统中经常变化的和稳定的部分
2.设计接口分隔上面两部分
3.通过添加一个中间层封装接口,可以实现任何设计需求
各种不同的设计模式其实就是在不同的需求下,围绕上面三点的不同表现形式。
一个中间层就是封装了一个设计概念。
[设计模式中的例子...]
看看中间层如何在COM中起作用。
1.智能指针
客户使用COM往往在复制接口指针后需要手动调用AddRef,使用完后调用Release。
这一工作使得COM使用非常麻烦。
另外QueryInterface中的void**参数也不是类型安全的。
这一切可以通过智能接口指针简化编程。
智能接口指针就是简化设计的一个中间层。
2. 调度接口, IDispatch
C++可以直接通过COM接口访问COM组件,因为它可以直接访问vbtl
C++客户 <==> COM接口(vbtl) <==> COM组件
那么VB,javascript等客户呢?他们不能直接访问内存,访问vbtl
这时加入一个中间层 IDispatch,然后这样
VB客户 <==> IDispatch::Invoke <