策略模式的应用

recast&detour源码中的设计模式


定义:

    策略模式定义了算法族,分别封装起来,让他们之间可以相互替换。此模式让算法的变化独立于使用算法的客户。


源码中 

客户Context:    sample 以及 sample派生类,包含一个指向【策略对象】的指针 m_tool

策略对象Strategy: sampleTool 以及  sampleTool派生类(算法族)


具体客户(Sample_SoloMesh, Sample_TileMesh, Sample_TempObstacles) 创建的时候设定其对应的【策略对象】(具体的SampleTool, 比如NavMeshTesterTool)。

Sample_SoloMesh 的构造函数默认设置m_tool为NavMeshTesterTool。

具体客户还可以调用handleTools动态切换使用其他【策略对象】。

Sample的 handleUpdate 委托给 m_tool 的 handleUpdate。当m_tool改变的时候,其handleUpdate的相应的改变了。handleStep等函数类似。

SampleTool 的设计 应用了 多用组合,少用继承 的设计原则。


猜你喜欢

转载自blog.csdn.net/u012138730/article/details/79961989