auto commit

This commit is contained in:
CyC2018 2018-03-03 11:56:29 +08:00
parent 96a50aac6c
commit 39ce69bb73

View File

@ -1042,27 +1042,29 @@ gobble!
**2. 模式类图**
模板方法 templateMethod() 定义了算法的骨架,确定了 primitiveOperation1() 和 primitiveOperation2() 方法执行的顺序,而 primitiveOperation1() 和 primitiveOperation2() 让子类去具体实现。
模板方法 templateMethod() 定义了算法的骨架,确定了 primitiveOperation1() 和 primitiveOperation2() 方法执行的顺序,而 primitiveOperation1() 和 primitiveOperation2() 让子类去实现。
![](https://github.com/CyC2018/InterviewNotes/blob/master/pics//ed62f400-192c-4185-899b-187958201f0c.jpg)
**3. 问题描述**
冲咖啡和冲茶都有类似的流程,但是某些步骤会有点不一样。
冲咖啡和冲茶都有类似的流程,但是某些步骤会有点不一样,要求复用那些相同步骤的代码
![](https://github.com/CyC2018/InterviewNotes/blob/master/pics//d8f873fc-00bc-41ee-a87c-c1b4c0172844.png)
**4. 解决方案类图**
其中 prepareRecipe() 方法就是模板方法,它确定了其它四个方法的具体执行步骤。其中 brew() 和 addCondiments() 方法在子类中实现。
![](https://github.com/CyC2018/InterviewNotes/blob/master/pics//aa20c123-b6b5-432a-83d3-45dc39172192.jpg)
**5. 设计原则**
**好莱坞原则**:别调用(打电话给)我们,我们会调用(打电话给)你。这一原则可以防止依赖腐败,即防止高层组件依赖底层组件,底层组件又依赖高层组件。该原则在模板方法的体现为,只有父类会调用子类,子类不会调用父类。
**好莱坞原则**:别调用(打电话给)我们,我们会调用(打电话给)你。这一原则可以防止依赖腐败,即防止高层组件依赖低层组件,低层组件又依赖高层组件。该原则在模板方法的体现为,只有父类会调用子类,子类不会调用父类。
**6. 钩子**
钩子hock某些步骤在不同实现中可有可无可以先定义一个什么都不做的方法把它加到模板方法 templteMethod() 中,如果子类需要它就覆盖默认实现并加上自己的实现。
钩子hock某些步骤在不同实现中可有可无可以先定义一个什么都不做的方法把它加到模板方法中如果子类需要它就覆盖默认实现并加上自己的实现。
**7. 代码实现**
@ -1089,6 +1091,7 @@ public abstract class CaffeineBeverage {
}
}
```
```java
public class Coffee extends CaffeineBeverage{
@Override
@ -1102,6 +1105,7 @@ public class Coffee extends CaffeineBeverage{
}
}
```
```java
public class Tea extends CaffeineBeverage{
@Override
@ -1115,6 +1119,7 @@ public class Tea extends CaffeineBeverage{
}
}
```
```java
public class CaffeineBeverageTestDrive {
public static void main(String[] args) {