當然最為大家熟知的就是Internet service provider,也就是網際網路服務提供者,
這裡要介紹的當然不會是後者,而是OO(物件導向)設計原則中的ISP。
所謂的ISP,就是希望programmer在設計介面時,能夠考慮到介面中的方法,是否要放在同一個介面。
請見以下的例子:
你會發現,run和fly方法,其實不適合一起放在IAnimal這個介面中,
雖然chicken會fly也會run,但是dog不會fly,而eagle不會run,
將這兩個方法放在同一個介面的後果就是,
可能實作這個介面的類別,必須實作根本用不到的方法。
也就是說上述的例子,違反了ISP,亦即介面分離原則。
所以在設計介面時,必須思考到一些method是否適合放在同一個介面中。
上述例子的改良如下:
那如果現在我們不是在設計新系統,而是在維護舊有系統,
然後發現有類似IAnimal這樣的介面時,該怎麼辦呢?
這時候可以利用Adapter pattern(轉接器模式)來處理,
避免之後新增的模組得承襲舊有系統的設計,去實作用不著的方法。
例如:
這樣的觀念在Java source code中屢見不鮮,
最明顯的例子就是AWT中的event listener和adapter,
例如MouseListener和MouseAdapter.
以上,就是ISP(Interface Segregation Principle)的介紹。
您好
回覆刪除請問您是看哪一本書學到的這些coding , design pattern的觀念呢?小弟想好好拜讀一番