成都游戲Coder,記錄游戲開發(fā)過程的筆記和心得!
1)但是如果function函數(shù)的某個操作是free obj時,通過todo恐怕不合適。2)可能有些子類型不關(guān)心不必要的接口但是也得寫。3)如果todo包含多個操作,則會讓之類變得很龐大。 2. visitor模式. 那么同時得提供下面的操作接口:
1)同樣多少Base子類得些多少 visit接口。 2)還得倚靠多態(tài)類型轉(zhuǎn)換調(diào)用特定的visit接口,因為obj還是Base* 類型,還得轉(zhuǎn)換具體的類型。 3.把所有操作綁定到類身上: 1)定義針對每個Base子類操縱接口類 2)Base所有子類型的保存需要操縱對象. Base類定義:
定義2子類:
定義操作類型:
現(xiàn)在function接口變?yōu)橄旅媪?/p>
調(diào)用方式:
最后發(fā)現(xiàn)最后一個有點像Listener模式,-_-|||總結(jié)完畢:代碼:/Files/expter/test.rar
posted on 2011-02-24 23:23 expter 閱讀(2241) 評論(4) 編輯 收藏 引用 所屬分類: 其他學(xué)習(xí)筆記 、工作筆記 、生活筆記 、算法與數(shù)據(jù)結(jié)構(gòu)
我覺得就為了歸納一些共同接口,這樣子做有點過了。不妨考慮在類設(shè)計時就將功能分出來。與其想盡辦法保持類接口的數(shù)量不膨脹,倒不如讓類的功能單一。簡單的繼承結(jié)構(gòu)就夠了。 回復(fù) 更多評論
我更傾向使用traits 和 基于tag的分派來實現(xiàn)這種效果,會簡潔很多。 回復(fù) 更多評論
可以在Base類里定義一個專門用于訪問子類特定方法的抽象方法,如:virtual void * do_special(void * param) = 0;在各個子類的實現(xiàn)里,不管其特定方法是什么,他們自己都可以通過實現(xiàn)do_special,并在其中調(diào)用那些方法而達到目的。 回復(fù) 更多評論
@abettor 就是第一種方法。 回復(fù) 更多評論
Powered by: C++博客 Copyright © expter