假設(shè)有多個類A, B, C,他們都有許多參數(shù)需要初始化,而這些參數(shù)來源有很多,可能在多種格式的文件中,也可能來自GUI,此外A,B,C除了這些參數(shù)還需要其他額外的,對于這種情況有沒有一種好的設(shè)計模式。我現(xiàn)在的實現(xiàn)是這樣的,一個抽象類提供讀取接口:Importer、各種具體讀取類來繼承這個抽象類:XXXImporter、XXXImporter,但是現(xiàn)在的問題就是A,B,C中的成員都是私有的,而XXXImporter等繼承類無法訪問,除非每個XXXImporter都設(shè)成友元類,這樣就變得很不容易擴(kuò)展了。因為我每加一個XXXImporter,就要在每個A,B,C等類中添加相應(yīng)的友元。除了這種方式,有沒有更好的辦法?
2 回答

慕斯王
TA貢獻(xiàn)1864條經(jīng)驗 獲得超2個贊
~~可以使用策略的方式,不清楚這種方式對你的設(shè)計是否有用
template <typename Importer>struct A { void doImport() { Importer::importImpl(); // 讀取數(shù)據(jù)處理 } };

千萬里不及你
TA貢獻(xiàn)1784條經(jīng)驗 獲得超9個贊
建造者模式 + 策略模式
通過配置文件配置建造順序,決定同樣的參數(shù),不同來源的覆蓋策略。另外,在構(gòu)建的時候把這些Importer放到一個容器里面,director類在構(gòu)建的時候根據(jù)配置策略挨個去找這些Importer就可以了。設(shè)置參數(shù)的時候可以通過反射實現(xiàn)。
- 2 回答
- 0 關(guān)注
- 1112 瀏覽
添加回答
舉報
0/150
提交
取消