当前位置: 首页 > news >正文

福田网站建设方案服务北京西站附近的景点有哪些

福田网站建设方案服务,北京西站附近的景点有哪些,科技九洲君,最实用的上网网址一览表学习难度#xff1a;⭐ #xff0c;比较常用 模板方法模式 在面向对象程序设计过程中#xff0c;程序员常常会遇到这种情况#xff1a;设计一个系统时知道了算法所需的关键步骤#xff0c;而且确定了这些步骤的执行顺序#xff0c;但某些步骤的具体实现还未知#xff0… 学习难度⭐ 比较常用 模板方法模式 在面向对象程序设计过程中程序员常常会遇到这种情况设计一个系统时知道了算法所需的关键步骤而且确定了这些步骤的执行顺序但某些步骤的具体实现还未知或者说某些步骤的实现与具体的环境相关。例如拿泡茶这件事来说可以分为4个步骤第一步洗茶具第二步烧开水第三步放入茶叶并根据不同的茶叶泡不同的时间第四步品茶。以上的一二四步都是一样的只有第三步不一样因此可以将一二四步具体实现好即模板方法。第三步则是用户自己需要实现的方法即抽象方法。模板方法的定义 定义一个操作中的算法骨架而将算法的一些步骤延迟到子类中使得子类可以不改变该算法结构的情况下重定义该算法的某些特定步骤。 模板方法Template Method模式包含以下主要角色 抽象类Abstract Class负责给出一个算法的轮廓和骨架。它由一个模板方法和若干个基本方法构成。 模板方法定义了算法的骨架按某种顺序调用其包含的基本方法。 基本方法是实现算法各个步骤的方法是模板方法的组成部分。基本方法又可以分为三种 抽象方法(Abstract Method) 一个抽象方法由抽象类声明、由其具体子类实现。 具体方法(Concrete Method) 一个具体方法由一个抽象类或具体类声明并实现其子类可以进行覆盖也可以直接继承。 钩子方法(Hook Method) 在抽象类中已经实现包括用于判断的逻辑方法和需要子类重写的空方法两种。 一般钩子方法是用于判断的逻辑方法这类方法名一般为isXxx返回值类型为boolean类型。 具体子类Concrete Class实现抽象类中所定义的抽象方法和钩子方法它们是一个顶级逻辑的组成步骤。 案例 【例】炒菜 炒菜的某些步骤是固定的分为开启灶台、倒油、炒菜、倒调料品、起锅共五个步骤。假设炒菜和倒调料品两个步骤不一样其他都一样现通过模板方法模式来用代码模拟。类图如下 代码 编写抽象模板类其中开炉灶、倒油、起锅都是固定的方法而炒菜和放调味品则是根据不同的菜品而不同的而cook()方法则是一个将上述步骤组合调用的一个方法使用final修饰不可被重写如下 // 烹饪抽象类 public abstract class AbstractCook {// 做菜很多步骤都一样的只是关键步骤不一样// 因此相同步骤作为模板实现好不同的自己实现private String food;public AbstractCook(String food){this.food food;}public void openStove(){//1. 开启灶台是相同步骤System.out.println(打开灶台将锅烧热);}public void pourOil(){//2. 倒油是相同步骤System.out.println(油倒入锅中并烧热);}//3. 翻炒时间和手法不一样public abstract void fry();//4. 不同菜的调味品不一样public abstract void pourSauce();//5. 出锅是一样的public void takeFood(){System.out.println(将炒好的food盛入餐盘中);}// final 修饰不被继承public final void cook(){openStove();pourOil();fry();pourSauce();takeFood();} } 然后具体的菜品的制作继承上述模板类其中共同的步骤就不用重新写了只需要重写自己的炒菜和放调味品的具体方法 // 炒贵州黄牛肉类 public class CookBeef extends AbstractCook{public CookBeef() {super(贵州黄牛肉);}Overridepublic void fry() {System.out.println(牛肉下锅总共炒10分钟每个30秒翻一下);}Overridepublic void pourSauce() {System.out.println(放盐和味精其他放酱油、蒜末、辣椒、葱花去腥提鲜);} }// 炒青菜类 public class CookVegetable extends AbstractCook{public CookVegetable() {super(青菜);}Overridepublic void fry() {System.out.println(蔬菜下锅总共炒2分钟每个5秒翻一下);}Overridepublic void pourSauce() {System.out.println(放盐和味精其他放耗油即可);} } 客户端测试类 public class Main {public static void main(String[] args) {// 炒牛肉CookBeef cookBeef new CookBeef();cookBeef.cook();System.out.println(-----------------);// 炒青菜CookVegetable cookVegetable new CookVegetable();cookVegetable.cook();} }输出结果 打开灶台将锅烧热 油倒入锅中并烧热 牛肉下锅总共炒10分钟每个30秒翻一下 放盐和味精其他放酱油、蒜末、辣椒、葱花去腥提鲜 将炒好的贵州黄牛肉盛入餐盘中 ----------------- 打开灶台将锅烧热 油倒入锅中并烧热 蔬菜下锅总共炒2分钟每个5秒翻一下 放盐和味精其他放耗油即可 将炒好的青菜盛入餐盘中 优点 提高代码复用性 将相同部分的代码放在抽象的父类中而将不同的代码放入不同的子类中。 实现了反向控制 通过一个父类调用其子类的操作通过对子类的具体实现扩展不同的行为实现了反向控制 并符合“开闭原则”。 缺点 对每个不同的实现都需要定义一个子类这会导致类的个数增加系统更加庞大设计也更加抽象。父类中的抽象方法由子类实现子类执行的结果会影响父类的结果这导致一种反向的控制结构它提高了代码阅读的难度。 适用场景 算法的整体步骤很固定但其中个别部分易变时这时候可以使用模板方法模式将容易变的部分抽象出来供子类实现。需要通过子类来决定父类算法中某个步骤是否执行实现子类对父类的反向控制。
http://www.dnsts.com.cn/news/109205.html

相关文章:

  • 医院做网站定位广东省备案网站建设方案书
  • 做母婴的网站网站被提示危险网站
  • 做外贸要做什么网站万网云主机 wordpress
  • 网站建设实习招聘wordpress设置多语言
  • seo综合查询 站长工具江苏润祥建设集团网站
  • 广西防城港建设厅网站视频网站开发视频
  • 获取网站的路径网站使用授权书
  • 服装设计参考网站贵阳网站建设兼职
  • 网站建设招代理建筑工地施工现场视频
  • 全球网站建设服务商wordpress显示文章全文
  • 帮别人做违法网站会判刑吗网站建设需要准备什么软件
  • 如何申请网站优化工作网站开发算法面试
  • 如何做网站的注册页面微信小程序广告投放价格表
  • 用html5做网站的心得体会网站首页的功能需求分析
  • 网站推广策略与问题分析企业网站运维
  • 建立中英文网站自己做网站可以挣钱吗
  • wordpress怎样做手机站用哪个网站做简历更好
  • 莱芜网站优化招聘网wordpress 演示
  • 一般学校网站的后台用什么做网络服务类型及其所采用的网络协议
  • 济南网站怎么做网站域名的单词
  • 青岛网站建设服务美工培训班学校
  • 电子商务网站建设规划的论文广州海珠网站开发定制
  • 邮件表头图片网站石家庄关键词排名提升
  • 网站域名分几种公司ui设计
  • 网页制作与网站建设初学者必看教程手表网站
  • 做淘客应该知道的网站个人不动产登记网上查询
  • 外贸网站发外链内蒙古住房和城乡建设部网站
  • 东莞技术好的网站建设推广网站建设远程培训
  • 在哪个网站可以一对一做汉教网站地图生成器
  • 专业建站公司费用关键词规划师