c# - 是“策略”还是“模板方法”模式?
问题描述
最近开始学习模式,看到很多策略模式这样的实现,但是我的前辈说,这是“模板方法”模式的实现。请帮助我确定适用于以下代码的设计模式:
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");
}
}
解决方案
这两种模式都不是。事实上,它根本不是一种模式。
策略模式需要一个依赖于IAnimal
其他操作的“上下文”类,而模板方法模式将使用一些从子类调用可覆盖方法的通用实现代码。
您的代码说明了继承的概念,这是您提到的两种模式的通用构建块。
推荐阅读
- reactjs - 故事书迁移到 CSF 的打字稿问题
- java - Selenium 中的 NullPointerException 与 java
- xslt - 在忽略空白值并在 XSLT 中添加 LineAmount 时删除重复项
- python - Pipenv shell 命令创建新的 venv 而不是加载现有的
- javascript - 在中使用 window.history.replaceState() 是否安全?
- javascript - 如何从不是数据库中的列的实体中返回额外的字段?
- node.js - 获取“被 CORS 策略阻止:请求的资源上不存在‘Access-Control-Allow-Origin’标头。” 使用 Axios 使用 MERN 堆栈
- database-design - 如何将自定义日志存储到数据库
- flutter - 解码飞镖中的音频缓冲区
- sql - 使用来自jsonb的milis将间隔添加到时间戳