1.is-a 與 has-a概念
2.is-a 與 has-a實例
3.何時用is-a ,何時用 has-a?推薦使用has-a架構
1.is-a 與 has-a概念
- 1.1 is-a(英語:subsumption,包含架構)是一種繼承關係,指的是類的父子繼承關係。表達的是一種方式:這個東西是那個東西的一種。例如:長方體與正方體之間--正方體是長方體的一種。正方體繼承了長方體的屬性,長方體是父類,正方體是子類。
- 2.2 has-a 是一種組合關係,是關聯關係的一種(一個類中有另外一個類型的實例),是總體和部分之間的關係(好比汽車和輪胎之間),而且表明的總體對象負責構建和銷燬部分對象,表明部分的對象不能共享。
2.is-a 與 has-a實例
class rectangle{...};//定義一個長方體類
class square : rectangle{...};//定義正方體類繼承長方體類
2.2 has-a實例
class tire{...}; //定義一個輪胎類
class car //車類
{
...
tire _t; //輪胎
}
3.何時用is-a ,何時用 has-a?推薦使用has-a
- 到底使用哪一種原則,就得根據模型的關係來決定;
- 當既能夠用is-a又能夠用has-a時,推薦使用has-a;
由於has-a是一種鬆耦合關係:倆個類徹底能夠獨立存在;spa
is-a是一種緊耦合code