设计模式

设计模式之模板模式引导篇

在讲模板模式原理前,我们按照惯例,先来个生活中例子。茶馆需要开发一个自动的泡咖啡和泡茶的程序。来源:凯哥Java(kaigejava)我们先来看看泡咖啡和泡茶的步骤:我们根据上图写代码实现:泡咖啡类,如下图:泡茶类如下图:测试类:运行结果:很简单。也很容易写出来。写出来很清楚。从上图中,可以发现,两个流程几乎是一样的套路(步骤)。其中,不变的部分:水烧开、倒入杯子、送给客人。这三步是不变的。变化的


设计模式之模板模式引导篇



在讲模板模式原理前,我们按照惯例,先来个生活中例子。茶馆需要开发一个自动的泡咖啡和泡茶的程序。

来源:凯哥Java(kaigejava)

我们先来看看泡咖啡和泡茶的步骤:

设计模式之模板模式引导篇


我们根据上图写代码实现:

泡咖啡类,如下图:

设计模式之模板模式引导篇


泡茶类如下图:

设计模式之模板模式引导篇


测试类:

设计模式之模板模式引导篇


运行结果:

设计模式之模板模式引导篇


很简单。也很容易写出来。写出来很清楚。

从上图中,可以发现,两个流程几乎是一样的套路(步骤)。其中,不变的部分:水烧开、倒入杯子、送给客人。这三步是不变的。

变化的是:冲咖啡还是泡茶叶;加糖/牛奶还是加柠檬这两个步骤是变化的。

项目进化第一个版本:

我们将不变的抽取出来,放到一个公共的类中。HotDrink。然后让coffe和tea都继承公共的类。得到的类图如下:

设计模式之模板模式引导篇


hotdrink超类代码如下:

设计模式之模板模式引导篇


项目进化第二个版本:

经过分析,我们发现,两个流程的还有相同的地方:

1.两个流程的步骤都一样(都是五个步骤的);

2.无论泡茶还是泡咖啡都是brew操作;

3.无论加糖还是加柠檬都是添加调料的。

所以,我们对项目在进行一次提取:

我们将操作流程也

原创不易,完成人机校验,阅读全文

相关推荐