策略當我第一次發現了策略模式,我很驚訝,它提供給我和我的計劃看似無限的可能性。我可以更好地封裝模型的行爲,甚至可以即時交換這種行爲。但是該策略也可以用來爲包含對象提供特徵和有效載荷 - 在超類中聲明的數據。生活很好。的策略對抗政策和對戰略
class MyMonsterAI { float const see_radius_; virtual void attack() = 0; /* .. */ };
class ElveAI { ElveAI() : see_radius_(150.0f) {} /* ... */ };
class CycloneAI { CycloneAI() : see_radius_(50.0f) {} /* ... */ };
class Monster { MyMonsterAI* ai_; };
而且走過來的政策模式,它可以讓我在供應參數含有類更大的靈活性 - 整個階級,但是裝備我很喜歡,雖然動態交換的行爲...這是不是太容易(除非部分政策是有策略的!)。
class MyMonsterTrait { typedef typename ElveAI AI; };
template< class MonsterTrait >
class Monster : public MonsterTrait::AI
{
void idle (void) { attack(); }
};
這兩種模式似乎都非常強大,我喜歡在不同的環境下使用這兩種模式。但我不確定在某些情況下是否有特定/典型/更實際的應用。
我想知道:你在哪裏使用的戰略和政策,地方?哪裏更適合?
您的文章是相當多的,爲什麼我討厭C++ – Mecki 2008-10-23 20:25:11
的總結,但它有一個很大的標題! – Mnebuerquo 2008-10-23 20:26:33