【模板方法模式应用场景举例】 比如在玩极品飞车这款游戏每辆车都有显示速度的仪表盘但有可能A车显示的是蓝色的仪表盘B车显示的是红色的仪表盘分析中可以发现他们都有车速度的值但显示的方式不太一样其实模板方法就是最典型的继承的使用大家平时百分百都可以用到只是不知道叫模板方法模式)! 【模板方法模式解释】 类型行为模式 模板方法模式定义一个操作中算法的骨架而将一些步骤延迟到子类中使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤 【模板方法模式UML图】 【模板方法模式JAVA代码实现】 新建赛车的父类 packagecar_package; publicclasscar_parent{ privateintspeed; publicintgetSpeed(){ returnspeed; } publicvoidsetSpeed(intspeed){ thisspeed=speed; } publicvoidprint_speed(){ Systemoutprintln(将速度+thisgetSpeed()+取出来!); } } 新建红色仪表盘的赛车实现类 packagecar_imple; importcar_packagecar_parent; publicclasscar_imple_redextendscar_parent{ @Override publicvoidprint_speed(){ superprint_speed(); Systemoutprintln(将速度+thisgetSpeed()+用红色的仪表盘显示车的速度); } } 新建蓝色仪表盘的赛车实现类 packagecar_imple; importcar_packagecar_parent; publicclasscar_imple_blueextendscar_parent{ @Override publicvoidprint_speed(){ superprint_speed(); Systemoutprintln(将速度+thisgetSpeed()+用蓝色的仪表盘显示车的速度); } } 新建客户端运行类 packagerun_main; importcar_implecar_imple_blue; importcar_implecar_imple_red; importcar_packagecar_parent; publicclassrun_main{ publicstaticvoidmain(String[]args){ car_parentcar_ref_red=newcar_imple_red(); car_ref_redsetSpeed(); car_ref_redprint_speed(); car_parentcar_ref_blue=newcar_imple_blue(); car_ref_bluesetSpeed(); car_ref_blueprint_speed(); } } 程序运行结果如下 将速度取出来! 将速度用红色的仪表盘显示车的速度 将速度取出来! 将速度用蓝色的仪表盘显示车的速度 这就是模板方法模式一个最常用最容易理解的一个模式将相同的功能抽象出来成一个父类然后用子类做不同功能的实现 【模板方法模式MyEclipse项目JAVA代码实现】 模板方法模式template_method示例代码点击 |