使用C# (.NET Core) 实现模板方法模式 (Template Method Pattern)
本文的概念内容来自深入浅出设计模式一书. 项目需求 有一家咖啡店, 供应咖啡和茶, 它们的工序如下: 咖啡: 茶: 可以看到咖啡和茶的制作工序是差不多的, 都是有4步, 其中有两步它们两个是一样的, 另外两步虽然具体内容不一样, 但是都做做的同一类工作. 现在问题也有了, 当前的设计两个类里面有很多重复的代码, 那么应该怎样设计以减少冗余呢? 初次尝试 把共有的方法放到父类里面, 把不同的方法放到子类里面. 父类里面有一个抽象的prepareRecipe()方法[翻译为准备烹饪方法/制作方法], 然后在不同的子类里面有不同的实现. 也就是说每个子类都有自己制作饮料的方法. 再仔细想想应该怎样设计 可以发现两个饮料的制作方法遵循了同样的算法: 把水烧开 用开水冲咖啡或茶 把冲开的饮料放到杯里 添加适当的调料 现在我们来抽像prepareRecipe()方法: 1.先看看两个饮料的差异: 两种饮料都有四道工序, 两个是完全一样的, 另外两个在具体的实现上是略有不同的, 但是还是同样性质的工序. 这两道不同的工序的本质就是冲饮料和添加调料, 所以prepareRecipe()可以这样写: 2...
