[学习日记] - [设计模式] - 组件协作之模板方法(Template Method)

125 阅读1分钟

场景

  • 软件对于某一项任务, 有稳定的整体操作流程/结构. 但是各个子步骤却有很多改变的需求.
  • ......

好处

  • 控制子类必须遵守的一些事项.
  • 子类只需要完成一些步骤/流程的细节.

代码片段

using System;

public class Program
{
    public static void Main(string[] args)
    {
        var ow = new Overwatch();
        ow.Play();
        
        var pubg = new PUBG();
        pubg.Play();
    }
}

public abstract class Game
{
    protected abstract void InitGame();
    protected abstract void StartGame();
    protected abstract void EndGame();

    public void Play()
    {
        InitGame();
        StartGame();
        EndGame();
    }
}

public class Overwatch : Game
{
    protected override void InitGame()
    {
        // ......
    }

    protected override void StartGame()
    {
        // ......
    }

    protected override void EndGame()
    {
        // ......
    }
}

public class PUBG : Game
{
    protected override void InitGame()
    {
        // ......
    }

    protected override void StartGame()
    {
        // ......
    }

    protected override void EndGame()
    {
        // ......
    }
}

总结

  • 灵活应对子步骤的变化, 不会影响到整体的流程.