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