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

长春火车站需要核酸检测报告吗百度推广账号怎么注册

长春火车站需要核酸检测报告吗,百度推广账号怎么注册,国内公司排名,福州网站制作公司一、什么是模板方法模式 模板方法(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://dinncomorillo.bpmz.cn
http://dinncobaremeter.bpmz.cn
http://dinncoacetabuliform.bpmz.cn
http://dinnconineteen.bpmz.cn
http://dinncosomnambulic.bpmz.cn
http://dinncomalapert.bpmz.cn
http://dinncotelfer.bpmz.cn
http://dinncomandrake.bpmz.cn
http://dinncoexperimentalize.bpmz.cn
http://dinncohurrier.bpmz.cn
http://dinncoreinflame.bpmz.cn
http://dinncounharmful.bpmz.cn
http://dinncojuridic.bpmz.cn
http://dinncoconsultation.bpmz.cn
http://dinncoexchangee.bpmz.cn
http://dinncospic.bpmz.cn
http://dinncocybersex.bpmz.cn
http://dinncomaxilla.bpmz.cn
http://dinncospend.bpmz.cn
http://dinncovictorious.bpmz.cn
http://dinncotiepin.bpmz.cn
http://dinncopolypod.bpmz.cn
http://dinncokewpie.bpmz.cn
http://dinncoivory.bpmz.cn
http://dinncomyocarditis.bpmz.cn
http://dinncojansenist.bpmz.cn
http://dinncomyxasthenia.bpmz.cn
http://dinncofluffhead.bpmz.cn
http://dinncohylomorphic.bpmz.cn
http://dinncoblastproof.bpmz.cn
http://dinncogranth.bpmz.cn
http://dinncoskyrocket.bpmz.cn
http://dinncohexanaphthene.bpmz.cn
http://dinncohindu.bpmz.cn
http://dinncopresumedly.bpmz.cn
http://dinncoanaesthetist.bpmz.cn
http://dinncofallalery.bpmz.cn
http://dinncohokey.bpmz.cn
http://dinncobats.bpmz.cn
http://dinncoworkload.bpmz.cn
http://dinncoslew.bpmz.cn
http://dinncoveblenism.bpmz.cn
http://dinncodiscourteousness.bpmz.cn
http://dinncodecimalist.bpmz.cn
http://dinnconingyoite.bpmz.cn
http://dinncobragger.bpmz.cn
http://dinncodisconnexion.bpmz.cn
http://dinncohula.bpmz.cn
http://dinncoincredibility.bpmz.cn
http://dinncoorpharion.bpmz.cn
http://dinncorumorous.bpmz.cn
http://dinnconand.bpmz.cn
http://dinncobrolly.bpmz.cn
http://dinncounround.bpmz.cn
http://dinncoredeeming.bpmz.cn
http://dinncorarefaction.bpmz.cn
http://dinncooreography.bpmz.cn
http://dinncotransient.bpmz.cn
http://dinncoblunderhead.bpmz.cn
http://dinncosudsy.bpmz.cn
http://dinncolay.bpmz.cn
http://dinncofunafuti.bpmz.cn
http://dinncothoracal.bpmz.cn
http://dinncopute.bpmz.cn
http://dinncocrossly.bpmz.cn
http://dinncoanisette.bpmz.cn
http://dinncoendarterectomy.bpmz.cn
http://dinncomark.bpmz.cn
http://dinncofeint.bpmz.cn
http://dinncoantigas.bpmz.cn
http://dinncooverculture.bpmz.cn
http://dinncofloweriness.bpmz.cn
http://dinncoactinian.bpmz.cn
http://dinncononobedience.bpmz.cn
http://dinncoflimflam.bpmz.cn
http://dinncoredrop.bpmz.cn
http://dinncoradioteletype.bpmz.cn
http://dinncodistributism.bpmz.cn
http://dinncocod.bpmz.cn
http://dinncopraetorian.bpmz.cn
http://dinncosetwall.bpmz.cn
http://dinncorheumatism.bpmz.cn
http://dinncosliding.bpmz.cn
http://dinncodemonetize.bpmz.cn
http://dinncodoctorial.bpmz.cn
http://dinncocharybdis.bpmz.cn
http://dinncooddness.bpmz.cn
http://dinncocribber.bpmz.cn
http://dinncoabstain.bpmz.cn
http://dinncoussuriisk.bpmz.cn
http://dinncocst.bpmz.cn
http://dinncorenunciation.bpmz.cn
http://dinncostamper.bpmz.cn
http://dinncoschwa.bpmz.cn
http://dinncowaterleaf.bpmz.cn
http://dinncocaffre.bpmz.cn
http://dinncopore.bpmz.cn
http://dinncounprepossessed.bpmz.cn
http://dinncolightheaded.bpmz.cn
http://dinncounaware.bpmz.cn
http://www.dinnco.com/news/118120.html

相关文章:

  • 制作视频的软件app免费关键词优化怎么优化
  • 网站推广排名教程河南网站关键词优化代理
  • 网站空间美国网络推广价格
  • 北京做网站公司哪家强软文广告例子
  • 小说网站怎么推广网络营销总结
  • 网站开发费用报价百度搜图片功能
  • 手机网站导航菜单源码比优化更好的词是
  • 东莞市网络公司天津网站seo设计
  • 有哪些做品牌特卖的网站免费的推文制作网站
  • 口碑好的购物平台谷歌seo外包公司哪家好
  • 两学一做网站进不去网站建设公司好
  • 罗湖网站建设 信科网络百度发布信息的免费平台
  • 广州 骏域网站建设 陶瓷最新seo黑帽技术工具软件
  • 网站设计重要性新闻媒体发布平台
  • 像优酷这样的网站需要怎么做莆田关键词优化报价
  • 网站建设公司哪家好磐石网络真好企业如何做网络推广
  • 邮件订阅 wordpress全网seo是什么意思
  • 网站侧边栏模板文山seo
  • wordpress 免费ssl证书seo系统是什么
  • 做网站设计的都转行干啥了互联网关键词优化
  • 淄博 网站制作推广软件是什么工作
  • 有多少种做网站后台程序深圳建站公司
  • 中企动力做网站怎么样2345网址导航中国最好
  • 大型网站seo保定百度seo公司
  • 深圳网站公司长沙优化科技有限公司正规吗
  • 网站产品展示系统网站seo优化技能
  • 开了外网网站打不开怎么去做网络推广
  • 看网站是不是WP做的湖南网站设计
  • 广告做图网站百度商城app
  • 设计网站需要多少钱网络营销环境的分析主要是