概述
模板方法
定义:定义了一个算法的骨架,并允许子类为一个或多个步骤提供实现
举个例子,把大象放进冰箱分几步,第一打开冰箱,第二打大象放进冰箱,第三把冰箱关闭。这三个步骤就可以用模板方法的设计模式。
定义补充:模板方法使得子类可以在不改变算法结构的情况下
,重新定义
算法的某些步骤
。
类型:行为型
适用场景:
(1)一次性实现一个算法的不变部分
,并将可变的行为
留给子类
来实现,(2)各子类中公共的行为被提取出来
并集中到一个公共父类
中,从而避免代码重复。
优点:
(1)提高复用性
,
(2)提高扩展性
,
(3)符合开闭原则
缺点:
(1)类数目的增加,
(2)增加了系统实现的复杂度,
(3)继承关系自身缺点,如果父类添加新的抽象方法,所有子类都要改一遍
扩展:钩子方法,钩子方法提供了缺省的行为,子类可以在必要时进行扩展,(简单的说,钩子方法是这个模板对子类更进一层的开放以及扩展)
钩子的实现方法:
是对于抽象方法或者接口中定义的方法的一个空实现,在实际中的应用,比如说有一个接口,这个接口里有7个方法,而你只想用其中一个方法,那么这时,你可以写一个抽象类实现这个接口,在这个抽象类里将你要用的那个方法设置为abstract,其它方法进行空实现,然后你再继承这个抽象类,就不需要实现其它不用的方法,这就是钩子方法的作用。
模板方法例子(不涉及钩子方法):
public abstract class Cart {
public final void start(){
System.out.println("按照规范启动了----");
}//启动车
public abstract void speed();//速度
public final void stop(){
System.out.println("按照规范停止了----");
}//关闭车
public final void show(){
this.start();
this.speed();
this.stop();
}
}
public class BydCart extends Cart{
@Override
public void speed() {
//我们可以将车看成一个骨架,但是速度可以由我们自己决定,
//相当于我们算法的骨架,但是实现算法的某一个步骤可以由我们自己决定
System.out.println("Byd speed 60km/h.........");
}
//测试show()
public static void main(String[] args) {
BydCart bydCart = new BydCart();
bydCart.show();
}
}
最后
以上就是直率蚂蚁为你收集整理的003__JAVA模板方法-设计模式的全部内容,希望文章能够帮你解决003__JAVA模板方法-设计模式所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复