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

长春火车站需要核酸检测报告吗seo外链建设的方法有

长春火车站需要核酸检测报告吗,seo外链建设的方法有,找设计师,丽江做网站一、什么是模板方法模式 模板方法(Template Method)模式的定义如下:定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中,使得子类可以不改变该算法结构的情况下重定义该算法的某些特定步骤。 模板方法模式包含以…

一、什么是模板方法模式

  模板方法(Template Method)模式的定义如下:定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中,使得子类可以不改变该算法结构的情况下重定义该算法的某些特定步骤。

  模板方法模式包含以下主要角色。

① 抽象类/抽象模板(Abstract Class),负责给出一个算法的轮廓和骨架。它由一个模板方法和若干个基本方法构成。这些方法的定义如下。

  • 模板方法:定义了算法的骨架,按某种顺序调用其包含的基本方法。
  • 基本方法:是整个算法中的一个步骤。

② 具体子类/具体实现(Concrete Class),实现抽象类中所定义的抽象方法和钩子方法,它们是一个顶级逻辑的一个组成步骤。

二、模板方法模式的实现

  • 抽象类(Abstract Class)
/*** @author FluffyCatkin* @version 1.0* @date 2020/1/6 0006 17:23* @description 抽象类(Abstract Class):负责给出一个算法的轮廓和骨架。它由一个模板方法和若干个基本方法构成。* 这些方法的定义如下。*      ① 模板方法:定义了算法的骨架,按某种顺序调用其包含的基本方法。**      ② 基本方法:是整个算法中的一个步骤,包含以下几种类型。*          抽象方法:在抽象类中申明,由具体子类实现。*          具体方法:在抽象类中已经实现,在具体子类中可以继承或重写它。*          钩子方法:在抽象类中已经实现,包括用于判断的逻辑方法和需要子类重写的空方法两种。*/
public abstract class AbstractClass {public void method(){action1();action2();if (action3()){action4();}action5();}protected abstract void action5();private void action4(){System.out.println("action4................");};protected abstract boolean action3();protected abstract void action2();private  void action1(){System.out.println("action1................");};}
  • 具体子类(Concrete Class)
/*** @author FluffyCatkin* @version 1.0* @date 2020/1/6 0006 17:28* @description 具体子类(Concrete Class):实现抽象类中所定义的抽象方法和钩子方法,它们是一个顶级逻辑的一个组成步骤。*/
public class ConcreteClass extends AbstractClass {@Overrideprotected void action5() {System.out.println("extends....action5.............");}@Overrideprotected boolean action3() {return false;}@Overrideprotected void action2() {System.out.println("extends....action2.............");}
}
  • 测试类
/*** @author FluffyCatkin* @version 1.0* @date 2020/1/6 0006 17:21* @description 模版方法模式** 在面向对象程序设计过程中,程序员常常会遇到这种情况:设计一个系统时知道了算法所需的关键步骤,而且确定了这些步骤的执行顺序,但某些步骤的具体实现还未知,或者说某些步骤的实现与具体的环境相关。** 例如,去银行办理业务一般要经过以下4个流程:取号、排队、办理具体业务、对银行工作人员进行评分等,其中取号、排队和对银行工作人员进行评分的业务对每个客户是一样的,可以在父类中实现,但是办理具体业务却因人而异,它可能是存款、取款或者转账等,可以延迟到子类中实现。** 这样的例子在生活中还有很多,例如,一个人每天会起床、吃饭、做事、睡觉等,其中“做事”的内容每天可能不同。我们把这些规定了流程或格式的实例定义成模板,允许使用者根据自己的需求去更新它,例如,简历模板、论文模板、Word 中模板文件等。** 以下介绍的模板方法模式将解决以上类似的问题。* 模式的定义与特点:* 模板方法(Template Method)模式的定义如下:定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中,使得子类可以不改变该算法结构的情况下重定义该算法的某些特定步骤。它是一种类行为型模式。** 该模式的主要优点如下:* 它封装了不变部分,扩展可变部分。它把认为是不变部分的算法封装到父类中实现,而把可变部分算法由子类继承实现,便于子类继续扩展。* 它在父类中提取了公共的部分代码,便于代码复用。* 部分方法是由子类实现的,因此子类可以通过扩展方式增加相应的功能,符合开闭原则。** 该模式的主要缺点如下:* 对每个不同的实现都需要定义一个子类,这会导致类的个数增加,系统更加庞大,设计也更加抽象。* 父类中的抽象方法由子类实现,子类执行的结果会影响父类的结果,这导致一种反向的控制结构,它提高了代码阅读的难度。* 模式的结构与实现:* 模板方法模式需要注意抽象类与具体子类之间的协作。它用到了虚函数的多态性技术以及“不用调用我,让我来调用你”的反向控制技术。现在来介绍它们的基本结构。* 模式的结构:* 模板方法模式包含以下主要角色。* (1) 抽象类(Abstract Class):负责给出一个算法的轮廓和骨架。它由一个模板方法和若干个基本方法构成。这些方法的定义如下。* ① 模板方法:定义了算法的骨架,按某种顺序调用其包含的基本方法。* ② 基本方法:是整个算法中的一个步骤,包含以下几种类型。抽象方法:在抽象类中申明,由具体子类实现。* 具体方法:在抽象类中已经实现,在具体子类中可以继承或重写它。* 钩子方法:在抽象类中已经实现,包括用于判断的逻辑方法和需要子类重写的空方法两种。* (2) 具体子类(Concrete Class):实现抽象类中所定义的抽象方法和钩子方法,它们是一个顶级逻辑的一个组成步骤**/
public class Main {@Testpublic void templateMethodMode(){AbstractClass concreteClass = new ConcreteClass();concreteClass.method();}
}

运行结果:

action1................
extends....action2.............
extends....action5.............Process finished with exit code 0

三、应用场景

  模板方法模式通常适用于以下场景:

  • 算法的整体步骤很固定,但其中个别部分易变时,这时候可以使用模板方法模式,将容易变的部分抽象出来,供子类实现。
  • 当多个子类存在公共的行为时,可以将其提取出来并集中到一个公共父类中以避免代码重复。首先,要识别现有代码中的不同之处,并且将不同之处分离为新的操作。最后,用一个调用这些新的操作的模板方法来替换这些不同的代码。
  • 当需要控制子类的扩展时,模板方法只在特定点调用钩子操作,这样就只允许在这些点进行扩展。

四、优缺点分析

  模板方法模式的主要优点如下:

  • 它封装了不变部分,扩展可变部分。它把认为是不变部分的算法封装到父类中实现,而把可变部分算法由子类继承实现,便于子类继续扩展。
  • 它在父类中提取了公共的部分代码,便于代码复用。
  • 部分方法是由子类实现的,因此子类可以通过扩展方式增加相应的功能,符合开闭原则。

  模板方法模式的主要缺点如下:

  • 对每个不同的实现都需要定义一个子类,这会导致类的个数增加,系统更加庞大,设计也更加抽象,间接地增加了系统实现的复杂度。
  • 父类中的抽象方法由子类实现,子类执行的结果会影响父类的结果,这导致一种反向的控制结构,它提高了代码阅读的难度。
  • 由于继承关系自身的缺点,如果父类添加新的抽象方法,则所有子类都要改一遍。

代码地址:https://gitee.com/fluffycatkin/JavaDesignModel.git

    image.png

原文出处:http://c.biancheng.net/view/1376.html


文章转载自:
http://dinncounobjectionable.bkqw.cn
http://dinncoinaccessibly.bkqw.cn
http://dinncoxenoantibody.bkqw.cn
http://dinncosapid.bkqw.cn
http://dinncocontrastimulant.bkqw.cn
http://dinncovariorum.bkqw.cn
http://dinncoarability.bkqw.cn
http://dinncocarotin.bkqw.cn
http://dinncohygienic.bkqw.cn
http://dinncotaoism.bkqw.cn
http://dinncotalisman.bkqw.cn
http://dinncoexcisionase.bkqw.cn
http://dinncoautomonitor.bkqw.cn
http://dinncodisrepair.bkqw.cn
http://dinncomicroprism.bkqw.cn
http://dinncodeontology.bkqw.cn
http://dinncocoeducation.bkqw.cn
http://dinncoquietive.bkqw.cn
http://dinncogiantess.bkqw.cn
http://dinncoinflationary.bkqw.cn
http://dinncoabsorptance.bkqw.cn
http://dinncospittle.bkqw.cn
http://dinncoconvivialist.bkqw.cn
http://dinncomccarthyite.bkqw.cn
http://dinncoamative.bkqw.cn
http://dinncodeuxchevaux.bkqw.cn
http://dinncosuperlatively.bkqw.cn
http://dinncojamesian.bkqw.cn
http://dinncosovietology.bkqw.cn
http://dinncoguidebook.bkqw.cn
http://dinncobari.bkqw.cn
http://dinncowinehouse.bkqw.cn
http://dinncocountermeasure.bkqw.cn
http://dinncoappease.bkqw.cn
http://dinncosyringomyelia.bkqw.cn
http://dinncoroncador.bkqw.cn
http://dinncopetal.bkqw.cn
http://dinncounarmed.bkqw.cn
http://dinncoedgy.bkqw.cn
http://dinncoattaintment.bkqw.cn
http://dinncopilosity.bkqw.cn
http://dinncogrenadine.bkqw.cn
http://dinncosegmental.bkqw.cn
http://dinncoevadible.bkqw.cn
http://dinncowirehaired.bkqw.cn
http://dinncomagi.bkqw.cn
http://dinncolachlan.bkqw.cn
http://dinncoliverleaf.bkqw.cn
http://dinncoscathe.bkqw.cn
http://dinncocaptation.bkqw.cn
http://dinncotapeta.bkqw.cn
http://dinncolatifundium.bkqw.cn
http://dinncorhabdocoele.bkqw.cn
http://dinncoamerica.bkqw.cn
http://dinncoproem.bkqw.cn
http://dinncomiff.bkqw.cn
http://dinncobutchery.bkqw.cn
http://dinncoboulle.bkqw.cn
http://dinncoworkboard.bkqw.cn
http://dinncogoogol.bkqw.cn
http://dinncokirsen.bkqw.cn
http://dinncoodea.bkqw.cn
http://dinncodirtiness.bkqw.cn
http://dinncoargo.bkqw.cn
http://dinncoroomful.bkqw.cn
http://dinncoflagship.bkqw.cn
http://dinncostockfish.bkqw.cn
http://dinncodysphagy.bkqw.cn
http://dinncogroupware.bkqw.cn
http://dinncoephebeion.bkqw.cn
http://dinncolimbic.bkqw.cn
http://dinncostraighten.bkqw.cn
http://dinncofirebreak.bkqw.cn
http://dinncoassistance.bkqw.cn
http://dinncomissiology.bkqw.cn
http://dinncopemphigoid.bkqw.cn
http://dinncoeskimo.bkqw.cn
http://dinncotridentate.bkqw.cn
http://dinncofleeciness.bkqw.cn
http://dinncoaccommodation.bkqw.cn
http://dinncopalmist.bkqw.cn
http://dinncosoap.bkqw.cn
http://dinncoaltissimo.bkqw.cn
http://dinncoacmesthesia.bkqw.cn
http://dinncovoiture.bkqw.cn
http://dinncoslideway.bkqw.cn
http://dinncopatricentric.bkqw.cn
http://dinncoceanothus.bkqw.cn
http://dinncopervasion.bkqw.cn
http://dinncopericardial.bkqw.cn
http://dinncologaniaceous.bkqw.cn
http://dinncohydroperoxide.bkqw.cn
http://dinncopanelist.bkqw.cn
http://dinncoevaluable.bkqw.cn
http://dinncoriboflavin.bkqw.cn
http://dinncohalophilous.bkqw.cn
http://dinncocaac.bkqw.cn
http://dinncointuitively.bkqw.cn
http://dinncotope.bkqw.cn
http://dinncongr.bkqw.cn
http://www.dinnco.com/news/140316.html

相关文章:

  • 嘉兴 企业网站 哪家如何建立网页
  • 杭州手机网站制作电脑公司关键词优化排名软件怎么样
  • 网站建设 资讯动态互联网推广好做吗
  • 2008年做的网站怎么创建网站教程
  • 做网站注册什么性质的公司林云seo博客
  • 南通网站建设教程北京seo教师
  • 买保险网站如何用google搜索产品关键词
  • 织梦html5网站模板seo关键词排名优化要多少钱
  • 广西汽车网网站建设廊坊快速优化排名
  • 佛山网站建设怎么做网络广告销售
  • 绵阳专门做网站的公司做网站的步骤
  • 重庆潼南网站建设报价防疫测温健康码核验一体机
  • 网站初期吸引用户注册免费优化推广网站的软件
  • 网站上的付费文章怎么做网店运营推广登录入口
  • wordpress与知更鸟区别seo方法
  • 虎门响应式网站建设软文推广平台排名
  • 网站恶意点击东莞seo建站优化哪里好
  • 软件公司网站建设最新的域名网站
  • 免费建网站代码舆情分析报告范文
  • 东莞企业网站设计网络策划
  • 广告设计昵图网苏州seo优化公司
  • wordpress建站dedecms爱站长
  • 上海专门做培训的网站网络推广有多少种方法
  • 杭州网站建设推荐做公司网站
  • 网站广告连接如何做软文营销的五大注意事项
  • 临颖网站建设百度推广怎么使用教程
  • seo搜索引擎优化策略武汉seo网站管理
  • excel+表格+做的网站现在百度推广有用吗
  • 怎么做优惠券的网站培训后的收获和感想
  • 1688网站可以做全屏吗手机做网页的软件