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

php门户网站源码源码交易网站源码

php门户网站源码,源码交易网站源码,孟津网站建设,重庆知名设计公司有哪些一,定义 定义一个操作中的算法的框架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 在面向对象的开发过程中,通常会遇到这样一个问题,我们知道一个算法所需的关键步…

一,定义

定义一个操作中的算法的框架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。

在面向对象的开发过程中,通常会遇到这样一个问题,我们知道一个算法所需的关键步骤,并确定了这些步骤的执行顺序,但是,某些步骤的具体实现是未知的,或者说某些步骤的实现是会随着环境的变化而改变的,例如,执行程序的流程大致如下:

1,检查代码的正确性

2,链接相关的类库

3,编译相关代码

4,执行程序

对于不同的程序设计语言,上述四个步骤都是不一样的,但是,他们的执行流程是固定的,这类问题的解决方案就是模板方法模式。

模板方法实际上是封装一个固定流程,就像是一套执行模板一样,第一步该做什么,第二步该做什么都已经在抽象类中定义好。而子类可以有不同的算法实现,在框架不被修改的情况下实现某些步骤的算法替换。

二,使用场景

1,多个子类有公有的方法,并且逻辑基本相同时。

2,重要,复杂的算法,可以把核心算法设计为模板方法,周边的相关细节功能则由各个子类实现。

3,重构时,模板方法模式是一个经常使用的模式,把相同的代码抽取到父类中,然后通过钩子函数约束其行为。

角色介绍:

抽象类:定义了一套算法框架

具体实现类:实现具体算法框架

三,使用案例

在英雄联盟游戏中,玩家要开始一场排位游戏,需要先1,进入匹配队列  2,进入banpick界面3,禁用英雄 4,选择英雄 5,选择符文和召唤师技能 6,进入游戏

如果使用模板模式,怎么来实现呢?

首先定义一个抽象模板类:

public class AbsRank {public void startMate(){System.out.println("进入匹配队列");}public void startBp(){System.out.println("进入bp界面");}public void startBan(){System.out.println("开始禁用英雄");}public void select(){System.out.println("选择英雄");}public void selectSkill(){System.out.println("选择符文和召唤师技能");}public void begin(){System.out.println("开始游戏");}public final void playGame(){startMate();startBp();startBan();select();selectSkill();begin();}
}

定义两个玩家类:

public class Yuanzhen extends AbsRank{@Overridepublic void startBan() {System.out.println("禁用亚索");}@Overridepublic void select() {System.out.println("选择剑圣");}@Overridepublic void selectSkill() {System.out.println("选择惩戒和闪现");}
}
public class Xiaoming extends AbsRank{@Overridepublic void startBan() {System.out.println("禁用赵信");}@Overridepublic void select() {System.out.println("选择蛮王");}@Overridepublic void selectSkill() {System.out.println("选择疾跑和闪现");}
}

使用 :

Yuanzhen yuanzhen =new Yuanzhen();
yuanzhen.playGame();
Xiaoming xiaoming =new Xiaoming();
xiaoming.playGame();

最后结果:

四,总结

模板方法模式用四个字概括就是:流程封装。也就是把某个固定的流程封装到一个final函数中 ,并且让子类能够定制这个流程中的某些或者所有步骤,这就要求父类提取共用的代码,提升代码的复用率,同时也带来了更好的可扩展性。

优点:

1,封装不变部分,扩展可变部分

2,提取公共部分代码,便于维护

缺点:

模板方法会带来代码阅读的难度,会让用户觉得难以理解

http://www.yayakq.cn/news/40421/

相关文章:

  • 网站后台建设软件火车头wordpress免登录发布
  • 重庆市建设监理协会网站山西新闻头条最新消息
  • 如何做网站公众号推广百度网站的建设目标
  • 时间轴网页网站模板免费建立平台网站
  • 注册top域名做公司网站php网络公司企业网站源码(万网idc代理网站源码)
  • 网站后台任务python爬虫爬小说来做网站
  • 南阳网站seo公司html技术的简介
  • 做爰的细节描述和过程网站删除后台wordpress新闻
  • 用php做网站的原理湖州网站设计浙北数据
  • 成都网站建设技术外包阿里云 wordpress主机
  • 手机网站技巧设计网站设计原则
  • 上海网站建设外包公司负责公司网站的更新和维护
  • 青山网站建设创业过程中网站建设
  • 网站风格抄袭网站admin后台界面模板
  • 株洲网站优化广州番禺天气
  • 重庆网站建设招标玉环住房与城乡建设规划局网站
  • 网站更新步骤大良做网站
  • 网站建设的基本术语wordpress宽度
  • 广东网站制作公司排名网站搭建 保定
  • 17网站一起做网店的流程室内装修装饰设计
  • 郑州模板建站系统wordpress多个导航菜单
  • 用dw 网站开发与设计报告html5经典网站
  • 无症状感染者会自愈吗淄博网站优化推广
  • 网站开发流程百度文库江苏省招投标办法建设厅网站
  • 抽奖网站建设电商网站建设去迅法网
  • 利用wordpress建站wordpress 图片中文名
  • 网站seo批量查询工具免费域名注册平台有哪些
  • 网站域名是啥seo优化流程
  • 建专业外贸网站目前主流网站建设软件
  • 优秀国内个人网站wordpress编辑器没有16px