1、is-a,has-a,like-a是什么
在面向對象設計的領域里,有若干種設計思路,主要有例如以下三種:
is-a、has-a、like-a
java中在類、接口、抽象類中有非常多體現。
了解java看這里:什么是Java
了解類和對象看這里:類、對象究竟有什么秘密
了解接口和抽象類看這里:接口和抽象類有什么差別
2、is-a是什么
is-a。顧名思義,是一個。代表繼承關系。
假設A is-a B,那么B就是A的父類。
一個類全然包括還有一個類的全部屬性及行為。
比如PC機是計算機,工作站也是計算機,PC機和工作站是兩種不同類型的計算機。但都繼承了計算機的共同特性。因此在用Java語言實現時,應該將PC機和工作站定義成兩種類,均繼承計算機類。
了解很多其它繼承看這里:java類的繼承有什么意義
3、has-a是什么
has-a,顧名思義。有一個。代表從屬關系。
假設A has a B,那么B就是A的組成部分。
同一種類的對象,通過它們的屬性的不同值來差別。
比如一台PC機的操作系統是Windows,還有一台PC機的操作系統是Linux。
操作系統是PC機的一個成員變量,依據這一成員變量的不同值,能夠區分不同的PC機對象。
4、 like-a是什么
like-a。顧名思義。像一個,代表組合關系。
假設A like a B,那么B就是A的接口。
新類型有老類型的接口,但還包括其它函數,所以不能說它們全然同樣。
比如一台手機能夠說是一個微型計算機,可是手機的通訊功能顯然不是計算機具備的行為,所以手機繼承了計算機的特性,同一時候須要實現通訊功能。而通訊功能須要作為單獨接口。而不是計算機的行為。
5、is-a,has-a,like-a怎樣應用
假設你確定兩件對象之間是is-a的關系,那么此時你應該使用繼承。比方菱形、圓形和方形都是形狀的一種。那么他們都應該從形狀類繼承。
假設你確定兩件對象之間是has-a的關系,那么此時你應該使用聚合。比方電腦是由顯示器、CPU、硬盤等組成的。那么你應該把顯示器、CPU、硬盤這些類聚合成電腦類。
假設你確定兩件對象之間是like-a的關系,那么此時你應該使用組合。比方空調繼承於制冷機,但它同一時候有加熱功能。那么你應該把讓空調繼承制冷機類,並實現加熱接口。