【Unity3D与23种设计模式】模板方法模式(Template Method)

 

GoF中定义:

“在一个操作方法中定义算法的流程,其中某些步骤由子类完成。

模板方法模式让子类在不变更原有算法流程的情况下,还能够重新定义其中的步骤”

 

每一次武器攻击目标时,都要按逻辑执行:

1.开火、枪口特效

2.子弹特效

3.武器特效

4.通知敌方被击中

 

而每一种武器(如:枪,炮)都要执行一遍相同顺序的逻辑

模板方法模式就是着手解决这个问题的

1.定义一个算法的流程,即是很明确地定义算法的每一个步骤,并写在父类的方法中,而每一个步骤都可以是一个方法的调用

2.某些步骤由子类完成,不同子类的特性计算在此实现

 

//TemplateMethod.cs
public abstract class AbstractClass {
    public void TemplateMethod() {
        PrimitiveOperation1();
        PrimitiveOperation2();
    }
    protected abstract void PrimitiveOperation1();
    protected abstract void PrimitiveOperation2();
}

public class ConcreteClassA : AbstractClass {
    protected override void PrimitiveOperation1()
    {
        Debug.Log("ConcreteClassA.PrimitiveOperation1");
    }
    protected override void PrimitiveOperation2()
    {
        Debug.Log("ConcreteClassA.PrimitiveOperation2");
    }
}

public class ConcreteClassB : AbstractClass
{
    protected override void PrimitiveOperation1()
    {
        Debug.Log("ConcreteClassB.PrimitiveOperation1");
    }
    protected override void PrimitiveOperation2()
    {
        Debug.Log("ConcreteClassB.PrimitiveOperation2");
    }
}
//TemplateMethodTest.CS
void UnitTest() {
    AbstractClass theClass = new ConcreteClassA();
    theClass.TemplateMethod();

    theClass = new ConcreteClassB();
    theClass.TemplateMethod();
}
//测试结果
ConcreteClassA.PrimitiveOperation1
ConcreteClassA.PrimitiveOperation2
ConcreteClassB.PrimitiveOperation1
ConcreteClassB.PrimitiveOperation2

 

 

文章整理自书籍《设计模式与游戏完美开发》 菜升达 著

posted on 2017-07-20 15:01  Lumious  阅读(289)  评论(0编辑  收藏  举报

导航