層與層之間必須有交互,
交互通過接口進行
接口由若干類型構成
類型分為數據規格,與調用規格(函數入口定義)
當層與層之間的入口類型發生變化時,依賴于該類型的層,都必須重新編譯和發布。
我把這叫做類型耦合
考慮如下
void CDailogA::SetViewData(const SomeType& data);
void CDailogA::GetViewData(SomeType& data);
如果SomeType的類型發生變動,整個界面層必須重新編譯, 此時,可以
1、努力維持SomeType的不可變動性;但很多時候,SomeType并不是跨層數據傳遞的零時類型,而是在其它層次中是具有意義的實體定義類型,比如其可能是某種類型在數據層的定義,必須具有可變性;
2、建立統一式,通過【元數據,類型信息】 + 【數據對象指針】 + 【 映射關系】(通過XML配置),進行統一的跨層數據輸入和輸出;
3、這個第2方法是需要思考的,并且要擴大范疇。