层与层之间必须有交互,
交互通过接口进行
接口由若干类型构成
类型分为数据规格,与调用规格(函数入口定义)
当层与层之间的入口类型发生变化时,依赖于该类型的层,都必须重新编译和发布。
我把这叫做类型耦合
考虑如下
void CDailogA::SetViewData(const SomeType& data);
void CDailogA::GetViewData(SomeType& data);
如果SomeType的类型发生变动,整个界面层必须重新编译, 此时,可以
1、努力维持SomeType的不可变动性;但很多时候,SomeType并不是跨层数据传递的零时类型,而是在其它层次中是具有意义的实体定义类型,比如其可能是某种类型在数据层的定义,必须具有可变性;
2、建立统一式,通过【元数据,类型信息】 + 【数据对象指针】 + 【 映射关系】(通过XML配置),进行统一的跨层数据输入和输出;
3、这个第2方法是需要思考的,并且要扩大范畴。