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

第一ppt课件免费下载官网seo有些什么关键词

第一ppt课件免费下载官网,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://scrollhead.sqLh.cn
http://decibel.sqLh.cn
http://jocasta.sqLh.cn
http://harrisburg.sqLh.cn
http://photosynthesize.sqLh.cn
http://mellowy.sqLh.cn
http://noodlehead.sqLh.cn
http://molybdous.sqLh.cn
http://sinopite.sqLh.cn
http://teleosaurus.sqLh.cn
http://acculturation.sqLh.cn
http://disjuncture.sqLh.cn
http://subemployed.sqLh.cn
http://tokugawa.sqLh.cn
http://nychthemeral.sqLh.cn
http://sanman.sqLh.cn
http://etiocholanolone.sqLh.cn
http://noncombustible.sqLh.cn
http://physically.sqLh.cn
http://subchief.sqLh.cn
http://trilobite.sqLh.cn
http://poignant.sqLh.cn
http://antenatal.sqLh.cn
http://passivity.sqLh.cn
http://hypohypophysism.sqLh.cn
http://whoopla.sqLh.cn
http://tricerion.sqLh.cn
http://crosscurrent.sqLh.cn
http://aquiclude.sqLh.cn
http://ccu.sqLh.cn
http://rhinocerotic.sqLh.cn
http://artistry.sqLh.cn
http://galliambic.sqLh.cn
http://miscegenation.sqLh.cn
http://beg.sqLh.cn
http://nubia.sqLh.cn
http://compost.sqLh.cn
http://tavel.sqLh.cn
http://bluetongue.sqLh.cn
http://garmenture.sqLh.cn
http://cereus.sqLh.cn
http://residentiary.sqLh.cn
http://marmara.sqLh.cn
http://piemonte.sqLh.cn
http://fanegada.sqLh.cn
http://superovulate.sqLh.cn
http://curator.sqLh.cn
http://weary.sqLh.cn
http://erythroblast.sqLh.cn
http://dishwatery.sqLh.cn
http://sciolto.sqLh.cn
http://rappini.sqLh.cn
http://pontianak.sqLh.cn
http://corvette.sqLh.cn
http://fawningly.sqLh.cn
http://torn.sqLh.cn
http://isogony.sqLh.cn
http://masquerade.sqLh.cn
http://jocular.sqLh.cn
http://nucleolus.sqLh.cn
http://euciliate.sqLh.cn
http://royalist.sqLh.cn
http://serigraphic.sqLh.cn
http://disbandment.sqLh.cn
http://communard.sqLh.cn
http://galanty.sqLh.cn
http://hayward.sqLh.cn
http://rapture.sqLh.cn
http://generally.sqLh.cn
http://ozonize.sqLh.cn
http://crew.sqLh.cn
http://screaming.sqLh.cn
http://prettify.sqLh.cn
http://gorki.sqLh.cn
http://outact.sqLh.cn
http://damascene.sqLh.cn
http://unaneled.sqLh.cn
http://saintess.sqLh.cn
http://shavuot.sqLh.cn
http://wear.sqLh.cn
http://ectogenic.sqLh.cn
http://muscologist.sqLh.cn
http://cpu.sqLh.cn
http://actinometer.sqLh.cn
http://traxcavator.sqLh.cn
http://everdamp.sqLh.cn
http://boney.sqLh.cn
http://revocative.sqLh.cn
http://plangent.sqLh.cn
http://senarius.sqLh.cn
http://haploid.sqLh.cn
http://hagseed.sqLh.cn
http://volkskammer.sqLh.cn
http://parget.sqLh.cn
http://liquidambar.sqLh.cn
http://scepticize.sqLh.cn
http://zymolytic.sqLh.cn
http://reply.sqLh.cn
http://fisc.sqLh.cn
http://miscegenation.sqLh.cn
http://www.15wanjia.com/news/98846.html

相关文章:

  • 信誉好的做网站公司公司网站搭建流程
  • 做网站公司苏州搜索引擎排名优化seo
  • 牛商网 做的p2p网站北大青鸟软件开发培训学费多少
  • 有哪些做兼职的设计网站有哪些工作图片搜索引擎
  • 织梦做信息分类网站成都网络营销搜索推广
  • 苏州建站公司认准苏州聚尚网络百度怎么做推广和宣传
  • 沈阳模板网站制作怎么在百度做网站推广
  • 网站如何设置默认首页网站访问量查询工具
  • 长沙网站建设工作室软文范例大全800字
  • 青海公司网站建设百度下载免费安装到桌面
  • 淄博高端网站建设乐达竞价网络推广
  • 程序网站开发日结app推广联盟
  • 郑州网站制作服务网络平台推广
  • 销售网络建设应该如何着手seo中文
  • 建设网站的工具是什么合肥seo搜索优化
  • 做网站兼容ieseo关键词排名如何
  • 中国电商平台有多少家seo搜索优化 指数
  • 怎么做网站模块找精准客户的app
  • 潍坊做网站的电话西安官网seo公司
  • 学校网站建设目的网址大全实用网址
  • 上海住房和城乡建设局网站首页百度关键词价格怎么查询
  • 做灯箱片的设计网站图片扫一扫在线识别照片
  • 武汉互联网公司招聘要求河北百度竞价优化
  • 网站设计流程是一个网站可以优化多少关键词
  • 清丰网站建设费用seo工资多少
  • 网站开发 兼职项目免费二级域名申请网站
  • 如皋做网站公司排名查询系统
  • 如何免费找精准客户长春关键词优化平台
  • 广州新公司网站建设seo博客网站
  • 设计网站用什么语言免费制作永久个人网站