[問題] Strategy/State Pattern in C++
這個問題其實比較偏向code refactoring
我有發文到OOAD版上
不過好像沒什麼人去那個版
所以我另外到這裡再問看看各位先進
看看大家會怎麼做
已經有一個很大的class
裡面也有很多物件和資源
也有提供一些介面函數會工作
但是因為工作的方式與內容會變化
所以把會變化的部份抽離出來
另外變成一個abstract class
然後再個別繼承出每個狀態並實作出來
使用時可以切換實體
利用virtual function和多型變化
成為strategy pattern
可以省卻一堆判斷式和擴充問題
問題是這個抽出來的繼承體系有很多小class
他們都需要存取原本大class內部的物件
可是C語言裡面,要存取private成員
就只能用friend或是該大class物件提供的public method
所以方法變成只有兩種:(如果還有更多,請指教)
方法a: 大class去friend所有的state子類別
方法b: 大class設計好低階的public介面函數,然後抽出去的類別只用這些介面存取
問題是這兩個方法感覺都不夠好
方法a會有超多的friend敘述
而方法b有的時候還真的設計不出來
OOAD版上有人提供了方法c:把大class的所有成員物件改public
這個也不是我要的
因為等於直接暴露整個內容出去了
那麼還有其他方法嗎?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.113.210.62
→
04/23 18:43, , 1F
04/23 18:43, 1F
→
04/23 18:43, , 2F
04/23 18:43, 2F
→
04/23 18:44, , 3F
04/23 18:44, 3F
→
04/23 18:45, , 4F
04/23 18:45, 4F
→
04/23 18:46, , 5F
04/23 18:46, 5F
→
04/23 18:48, , 6F
04/23 18:48, 6F
→
04/23 18:48, , 7F
04/23 18:48, 7F
→
04/23 18:52, , 8F
04/23 18:52, 8F
→
04/23 18:52, , 9F
04/23 18:52, 9F
→
04/23 18:59, , 10F
04/23 18:59, 10F
→
04/23 19:11, , 11F
04/23 19:11, 11F
→
04/23 19:20, , 12F
04/23 19:20, 12F
→
04/23 19:21, , 13F
04/23 19:21, 13F
→
04/23 19:22, , 14F
04/23 19:22, 14F
→
04/23 19:23, , 15F
04/23 19:23, 15F
→
04/23 19:41, , 16F
04/23 19:41, 16F
→
04/23 19:42, , 17F
04/23 19:42, 17F
※ 編輯: iamstudent 來自: 140.113.210.62 (04/23 19:43)
※ 編輯: iamstudent 來自: 140.113.210.62 (04/23 20:52)
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 3 篇):
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章