模板模式原理(做框架):
形象举例:
泡咖啡与泡茶的算法 | 泡茶步骤:
步骤一、水烧开 | 步骤一:水烧开
步骤二、冲泡 | 步骤二:冲泡茶叶
步骤三、放牛奶 | 步骤三:加柠檬
将泡茶的步骤抽象成一个超类,每个方法在子类中实现。
抽象冲泡步骤,放到超类中,步骤即是模板。
类图实现:
模板模式:
封装了一个算法步骤,并用许子类为一个或多个步骤方法提供实现。
模板模式可以使子类在不改变算法结构的情况下,重新定义算法中的某些步骤。
通用类图:
超类是抽象类,在抽象类中存在final的方法(不需要子类实现),也有需要实现的方法。
模板模式举例:
数组中的模板:数组类之间的比较功能实现了Comparable接口,数组内置的sort模板,调用对象的Comparable。
android中的模板:重写getCount()、getview()方法,BasAdapter,Activity的生命周期。
好莱坞原则:
好莱坞原则的意义:
高层无需知道底层的细节,高层与底层解耦。(别调用我们,我们会调用你。)
好莱坞原则与模板模式:
存在专门的一个对象,用于处理个对象之间的流程,子类只关注各自性化的东西。降低耦合度,提高扩展性。
模板模式关键点:
分析异同点,发现相似处,梳理体系结构,在超类抽象出公共部分。
模板模式函数的三种类型:
1、超类中实现的模板子类中不能修改。
2、实现个性化的方法,子类中实现。
3、超类中存在的可选个性化方法,子类中实现。
模板模式与策略模式的区别:
模板模式封装(侧重)的是步骤,策略模式强调某一个方法或者功能。
策略模式通过组合(接口委托方式),模板模式通过继承的方法实现。
策略模式与模板模式可以互相结合。