首页 > 解决方案 > 是“策略”还是“模板方法”模式?

问题描述

最近开始学习模式,看到很多策略模式这样的实现,但是我的前辈说,这是“模板方法”模式的实现。请帮助我确定适用于以下代码的设计模式:

interface IAnimal {
    void MakeSound();
}

class Dog : IAnimal {
    void MakeSound() {
        Console.WriteLine("hoof");
    }
}

class Cat : IAnimal {
    void MakeSound() {
        Console.WriteLine("meow");
    }
}

class Cow : IAnimal {
    void MakeSound() {
        Console.WriteLine("moo");
    }
}

标签: c#design-patterns

解决方案


这两种模式都不是。事实上,它根本不是一种模式。

策略模式需要一个依赖于IAnimal其他操作的“上下文”类,而模板方法模式将使用一些从子类调用可覆盖方法的通用实现代码。

您的代码说明了继承的概念,这是您提到的两种模式的通用构建块。


推荐阅读