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