网络网站排名优化福建亨立建设集团有限公司网站
网络网站排名优化,福建亨立建设集团有限公司网站,海口模板建站定制网站,网络维护培训目录 一、定义二、使用场景三、使用方法四、结构五、代码示例六、优点七、缺点八、适用场景 一、定义 1.在父类定义一个操作中的算法骨架#xff0c;将算法的一些步骤延迟到子类中#xff0c;使得子类可以不改变该算法结构的情况下重定义该算法的某些特定步骤
二、使用场景 … 目录 一、定义二、使用场景三、使用方法四、结构五、代码示例六、优点七、缺点八、适用场景 一、定义 1.在父类定义一个操作中的算法骨架将算法的一些步骤延迟到子类中使得子类可以不改变该算法结构的情况下重定义该算法的某些特定步骤
二、使用场景 1.设计一个系统时知道了算法所需的关键步骤而且确定了这些步骤的执行顺序但某些步骤的具体实现还未知或者说某些步骤的实现与具体的环境相关
三、使用方法 1.将公共的方法定义在父类中可以提高代码的复用性 2.不明确的方法在子类中实现并将方法抽取为父类的抽象方法
四、结构 1.模板方法模式包含的角色抽象父类、具体子类 2.抽象父类负责给出一个算法的轮廓和骨架由一个模板方法和若干个基本方法构成。 3.模板方法定义了算法的骨架按某种顺序调用其包含的基本方法。 4.基本方法是实现算法各个步骤的方法是模板方法的组成部分。基本方法分为抽象方法、具体方法、钩子方法 5.抽象方法一个抽象方法由抽象类声明由具体子类实现 6.具体方法一个具体方法由抽象类或具体类声明并实现其子类可以进行覆盖也可以直接继承 7.钩子方法在抽象类中已经实现包括用于判断的逻辑方法和需要子类重写的空方法两种。一般钩子方法是用于判断的逻辑方法这类方法名一般为isXxx返回值类型为boolean类型 8.具体子类实现抽象类中定义的抽象方法和钩子方法它们是一个顶级逻辑的组成步骤
五、代码示例 1.抽象类
package com.learning.template;/*** 抽象类*/
public abstract class AbstractClass {//模板方法定义public final void cookProcess(){// 倒油pourOil();// 热油heatOil();// 倒蔬菜pourVegetable();// 倒调味品pourSauce();// 炒fry();}public void pourOil(){System.out.println(倒油);}public void heatOil(){System.out.println(热油);}public abstract void pourVegetable();public void pourSauce(){System.out.println(撒盐);}public void fry(){System.out.println(翻炒);}
} 2.炒包菜
package com.learning.template;public class Baocai extends AbstractClass{Overridepublic void pourVegetable() {System.out.println(放入包菜);}
} 3.炒菜心
package com.learning.template;public class Caixin extends AbstractClass{Overridepublic void pourVegetable() {System.out.println(放入菜心);}
}4.测试
package com.learning.template;public class Client {public static void main(String[] args) {Baocai baocai new Baocai();baocai.cookProcess();System.out.println();Caixin caixin new Caixin();caixin.cookProcess();}
} 5.结果示例
六、优点 1.提高代码复用性将相同部分的代码放在抽象的父类中而将不同的代码放入不同的子类中。 2.实现了反向控制通过一个父类调用其子类的操作通过对子类的具体实现扩展不同的行为实现了反向控制 并符合“开闭原则”。
七、缺点 1.对每个不同的实现都需要定义一个子类这会导致类的个数增加系统更加庞大设计也更加抽象。 2.父类中的抽象方法由子类实现子类执行的结果会影响父类的结果这导致一种反向的控制结构它提高了代码阅读的难度.
八、适用场景 1.算法的整体步骤很固定但其中个别部分易变时这时候可以使用模板方法模式将容易变的部分抽象出来供子类实现。 2.需要通过子类来决定父类算法中某个步骤是否执行实现子类对父类的反向控制。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/90500.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!