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

柳州企业网站建设公司河南省城乡建设厅网站首页

柳州企业网站建设公司,河南省城乡建设厅网站首页,石家庄做网络推广的公司,网站需求方案什么是模板方法模式 模板方法模式定义了一个操作中算法的框架#xff0c;而将一些步骤延迟到子类中#xff0c;使得子类可以不改变一个算法的结构就可以重定义该算法的某些特定步骤。     模板方法模式主要包含几下几个角色#xff1a;         AbstractClass(抽…什么是模板方法模式 模板方法模式定义了一个操作中算法的框架而将一些步骤延迟到子类中使得子类可以不改变一个算法的结构就可以重定义该算法的某些特定步骤。     模板方法模式主要包含几下几个角色         AbstractClass(抽象类)在抽象类中定义了一系列基本操作这些操作可以是具体的也可以是抽象的每一个基本操作对应算法的一个步骤在子类中可以重定义或实现这些步骤。同时在抽象类中实现了一个模板方法用于定义一个算法的框架模板方法不仅可以调用抽象类中实现的方法也可以调用子类中实现的基本方法。         ConcreteClass(具体类)是抽象类的子类用于实现父类中声明的抽象方法也可以覆盖父类中已经实现的具体方法。 模板方法模式的优缺点 优点 在父类中定义模板方法子类实现细节的处理并不会改变模板方法中的执行步骤。提取了公共逻辑放到父类中提高代码复用性。可在子类中重定义父类中的方法提高了扩展性。增加新的子类方便符合单一职责原则和开闭原则。 缺点 需要为每一个基本方法的不同实现提供一个子类如果父类中可变基本方法过多将会导致类的个数增加。系统更加庞大设计更加抽象。 模板方法模式的应用场景 对一些复杂的算法进行分割将算法中固定不变的部分设计为模板方法和父类具体方法一些可变的部分由子类实现。多个类中有公共行为应该被提取出来到父类中减少代码重复。需要通过子类来决定父类算法中某个步骤是否执行实现子类对父类的反向控制。 模板方法模式的案例 // 抽象类 public abstract class SoyaMilk {final void make() {select();if (customerWantCondiments()) {addCondiments();}soak();beat();}void select() {System.out.println(第一步选择好的新鲜黄豆 );}abstract void addCondiments();void soak() {System.out.println(第三步 黄豆和配料开始浸泡 需要3小时 );}void beat() {System.out.println(第四步黄豆和配料放到豆浆机去打碎 );}boolean customerWantCondiments() {return true;} }// 具体类 public class RedBeanSoyaMilk extends SoyaMilk {Overridevoid addCondiments() {System.out.println( 加入上好的红豆 );}}public class PureSoyaMilk extends SoyaMilk {Overridevoid addCondiments() {}Overrideboolean customerWantCondiments() {return false;}}public class PeanutSoyaMilk extends SoyaMilk {Overridevoid addCondiments() {System.out.println( 加入上好的花生 );}}public static void main(String[] args) {//制作红豆豆浆System.out.println(----制作红豆豆浆----);SoyaMilk redBeanSoyaMilk new RedBeanSoyaMilk();redBeanSoyaMilk.make();System.out.println(----制作花生豆浆----);SoyaMilk peanutSoyaMilk new PeanutSoyaMilk();peanutSoyaMilk.make();System.out.println(----制作纯豆浆----);SoyaMilk pureSoyaMilk new PureSoyaMilk();pureSoyaMilk.make(); } 模板方法模式在源码中的应用 InputStream // 抽象类 public abstract class InputStream implements Closeable {public abstract int read() throws IOException;public int read(byte b[]) throws IOException {return read(b, 0, b.length);}...... }// 具体类 public class FileInputStream extends InputStream {public int read() throws IOException {return read0();}public int read(byte b[]) throws IOException {return readBytes(b, 0, b.length);}...... }
http://www.w-s-a.com/news/762004/

相关文章:

  • 简易的在线数据库网站模板网站多服务器建设
  • 成都seo网站建设花店网页模板html
  • 义乌市网站制作网络营销策略名词解释
  • 高端品牌网站建设图片wordpress 资源站主题
  • 上海建设工程监督总站网站电商网站wordpress
  • 网站建设 医院菏泽网站建设熊掌号
  • 成都网站建设企业预约网免费建站流程
  • 网站建设胶州中国政务网站建设绩效评估
  • 合肥知名网站推广胶东国际机场建设有限公司网站
  • asp.ney旅游信息网站下载 简洁濮阳微信网站开发
  • 建设网站专业怎么上传网站程序到空间
  • 县城乡建设局网站微商城小程序哪个好
  • 博物馆门户网站建设优势重庆seo排名系统运营
  • 哪有app制作公司上海seo排名
  • 长沙建站seo公司北京招聘信息
  • 建设网站情况说明范文四川个人证书查询网官网
  • 推广学校网站怎么做公司可以做多个网站吗
  • 游戏网站后台建设郑州定制网站
  • 商务公司网站建设网站建设如何自学
  • 现在建网站可以拖拉式的吗中国国内最新新闻
  • phpstorm网站开发产品logo设计
  • 电子商务网站建设与运营什么是单页面网站
  • 西安优化网站公司南阳微信网站
  • 购物网站线下推广方案佛山快速建站哪家服务专业
  • 临沂网站排名外贸网站推广方法之一
  • 手机网站百度关键词排名查询吕梁网站制作吕梁安全
  • 做网站媒体wordpress管理员账号数据库添加
  • php如何自己做网站wordpress怎么修改编辑代码
  • 网站建网站建设公司WordPress互联
  • 泊头市网站建设价格wordpress导航菜单位置