搞特务的程序
2019獨角獸企業重金招聘Python工程師標準>>>
為了解耦合而產生一些很奇怪的程序寫法。有一些程序員大概已經忘記了java是面向對象的。
類A和B為了解耦合,只能從A調用B。B中沒有A的引用。B從來不直接和A通訊,如果需要,B會把消息放到一個公共的Session中。這種單線聯系,看起來好像是搞特務活動的。Session中的消息是有約束的,不然A不知道B放了什么。我在想這個約束是不是也是一種耦合,的確是,但是已經比較松散了。
在設計的分層上,B其實是業務層次的抽象,A負責協調數據和顯示數據的邏輯。這樣的設計其實是希望將顯示部分與業務部分分離開。
這個設計乍一看沒有什么問題,但是其實是不好的。中間環節其實是多余的。我們其實可以設計一個良好的接口,就可以避免中間Session的環節。變成A請求B,B有問必答。這樣可能更好。必經程序不是搞特務的,沒有必要搞那么神秘。反正A已經知道B了,中間環節就略顯多余。
還有一個問題,那就是狀態共享的問題。這種解耦的情況下,其實A和B的關系還是比較緊密的。那么如果A和B之間沒有共享的狀態,A就要維護一份B的狀態。
轉載于:https://my.oschina.net/clarkhill/blog/29489
總結
- 上一篇: 临危不乱,.Net+IIS环境经常出现的
- 下一篇: .NET环境下创建Activex (转)