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