OOD沉思录 --- 类和对象的关系 --- 使用关系
使用關系
對象A的方法MethodA使用了B的方法MethodB,則表示A對B存在使用關系 使用關系的最關鍵問題在于,A如何找到B,存在6種方案
方案一: ?????
A包含了B,B作為一個成員定義在A的類中,那么在MethodA中可以直接調用B.MethodB() ?????
如汽車可以包含車輪。 ?????
如果汽車需要加油,那么就需要調用"加油站B.加油()"??????
[cpp] view plaincopyprint?????? 那么關鍵問題在于,汽車如何知道加油站X? ?????
如果讓汽車包含加油站,肯定不合適(太土豪了,呵呵),那么還有以下5種方案:
方案二: ????? 通過形參將加油站傳遞給調用的方法,那么調用形式就是“加油站.加油()",那么汽車的定義則如下
[cpp] view plaincopyprint?方案三:
????? 通過一個第三方類來獲得加油站,如地圖類,則汽車的定義如下:?????
[cpp] view plaincopyprint?方案四: ?????
全世界只有一個加油站,那么所有的汽車都到這里來加油,則汽車的定義如下:
[cpp] view plaincopyprint?????? 這種情況就是單件模式的例子,還記得它嗎?
方案五: ?????
對款爺來說,隨時修一個加油站,加完油就推平,這種情況在大部分領域行不通(代價太高),但是在軟件領域可以(因為代價很低)
這種情況下,汽車的定義如下:
[cpp] view plaincopyprint?方案六: ?????
汽車制造商在汽車的玻璃上明確標注了,此車只能在名叫"XX加油站",則汽車的定義如下:
[cpp] view plaincopyprint?????? 這種方案,在有的地方叫弱引用,汽車并不直接包含加油站,但是包含加油站的一個標示
轉載于:https://www.cnblogs.com/stst/p/4909620.html
總結
以上是生活随笔為你收集整理的OOD沉思录 --- 类和对象的关系 --- 使用关系的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Access denied for us
- 下一篇: 集群管理要点