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