go語言學習筆記---非入侵式接口設計探究

關鍵詞:非入侵式

首先我們要知道什麼是入侵式接口,
比如定義了接口
Person接口:Fight(),Play(),Zhimaoyi(),Zuofan()方法
Women接口:Zhimaoyi(), Zuofan()方法
Man接口:Fight(),Play()方法
classPerson類實現了Person接口的所有方法
  • 在傳統的oo編程語言中,爲了得到一個Man的對象,至少要寫一個classMan類去實現Man接口,爲了得到一個Women的對象又不得不寫一個classWomen類去實現Women接口,同理要得到一個Person的對象也得這麼做,顯然這樣代碼的複用率並不高
  • 或者這樣設計接口,Fight,Play,Zhimaoyi,Zuofan等基礎接口,Man接口繼承自Fight,Play接口, Women接口繼承自Zhimaoyi, Zuofan接口,這就是入侵式接口設計(雖然還沒這說法,但是這在傳統oo設計中很常見,也比這要複雜的多)
go的非入侵式接口完全沒有繼承這個概念:
classPerson 實現了Person接口,其實classPerson同樣實現了Women接口和Man接口所定義的方法,所以在go中,下面的方式是合法的也是被推薦的
var man Man = new(classPerson)
var women Women = new(classPerson)

傳統的oo設計中,接口方是強勢的,而非入侵式的接口設計中反而是更靈活的,更注重實用的, 
未完待續。。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章