首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

父类公开标准方法,子类提供子方法来做工作

是面向对象编程中的一种设计模式,称为模板方法模式。该模式通过定义一个抽象的父类,其中包含一个公开的标准方法,该方法定义了算法的骨架,但具体的实现由子类提供。子类可以通过重写父类的方法来实现自己的特定行为,从而完成工作。

模板方法模式的优势在于它提供了一种灵活的方式来定义算法的骨架,同时允许子类根据自身的需求来实现具体的细节。这样可以避免代码的重复,提高代码的复用性和可维护性。

应用场景:

  1. 在软件开发中,当多个类具有相似的行为结构,但具体实现有所不同时,可以使用模板方法模式来提取公共的行为,并将不同的实现细节交给子类来完成。
  2. 在测试框架中,可以使用模板方法模式来定义测试用例的执行流程,而具体的测试步骤则由子类来实现。
  3. 在框架设计中,可以使用模板方法模式来定义框架的基本结构和流程,而具体的业务逻辑则由子类来实现。

推荐的腾讯云相关产品和产品介绍链接地址:

  • 腾讯云函数(云原生):腾讯云函数是一种事件驱动的无服务器计算服务,可帮助开发者在云端运行代码,无需关心服务器管理。详情请参考:腾讯云函数产品介绍
  • 腾讯云数据库(数据库):腾讯云数据库提供多种数据库产品,包括关系型数据库、NoSQL数据库和数据仓库等,满足不同场景的需求。详情请参考:腾讯云数据库产品介绍
  • 腾讯云CDN(网络通信):腾讯云CDN是一种分布式部署的内容分发网络,可加速网站、应用和音视频等内容的传输,提供更快的访问速度和更好的用户体验。详情请参考:腾讯云CDN产品介绍
  • 腾讯云安全产品(网络安全):腾讯云提供多种安全产品,包括Web应用防火墙(WAF)、DDoS防护、安全加速等,保护用户的云端资源和网络安全。详情请参考:腾讯云安全产品介绍
  • 腾讯云音视频处理(音视频、多媒体处理):腾讯云音视频处理提供多种音视频处理服务,包括转码、截图、水印、直播录制等,满足不同场景下的音视频处理需求。详情请参考:腾讯云音视频处理产品介绍
  • 腾讯云人工智能(人工智能):腾讯云提供多种人工智能服务,包括图像识别、语音识别、自然语言处理等,帮助开发者构建智能化的应用和服务。详情请参考:腾讯云人工智能产品介绍
  • 腾讯云物联网(物联网):腾讯云物联网提供全面的物联网解决方案,包括设备接入、数据管理、应用开发等,帮助用户快速构建和管理物联网应用。详情请参考:腾讯云物联网产品介绍
  • 腾讯云移动开发(移动开发):腾讯云移动开发提供多种移动开发服务,包括移动应用开发、移动推送、移动测试等,帮助开发者构建高质量的移动应用。详情请参考:腾讯云移动开发产品介绍
  • 腾讯云对象存储(存储):腾讯云对象存储是一种高可靠、低成本的云端存储服务,适用于存储和管理各种类型的非结构化数据。详情请参考:腾讯云对象存储产品介绍
  • 腾讯云区块链服务(区块链):腾讯云区块链服务提供一站式区块链解决方案,包括区块链网络搭建、智能合约开发、链上数据存储等,帮助用户快速构建和部署区块链应用。详情请参考:腾讯云区块链服务产品介绍
  • 腾讯云虚拟专用网络(VPC):腾讯云虚拟专用网络提供安全可靠的网络隔离环境,用户可以在自己的VPC中创建和管理云资源。详情请参考:腾讯云虚拟专用网络产品介绍
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

设计模式 ( 十九 ) 模板方法模式Template method(行为型)

10.模式的扩展 1)模板方法模式与控制反转(好莱坞原则)在模板方法模式中,子类不显式调用方法,而是通过覆盖方法来实现某些具体的业务逻辑,控制对子类的调用,这种机制被称为好莱坞原则(Hollywood...通过顶级逻辑,它通过定义并提供一个具体方法来实现,我们也称之为模板方法。通常这个模板方法才是外部对象最关心的方法。...子类需要继承去扩展的基本方法,但是它也可以覆写方法。如果子类去覆写了的模板方法,从而改变了控制的顶级逻辑,这违反了“开闭原则”。...一个应该只公开外部需要调用的方法。而所有为public方法服务的方法都应该声明为protected或private。如是一个方法不是需要对外公开的,但是它需要被子类进行扩展的或调用。...hook方法在抽象中的实现为空,是留给子类一些可选的操作。

41020
  • Java复习【知识改变命运】第六章

    :同一个包的不同类 private:同一个 java 提供四种访问控制修饰符号,用于控制方法和属性(成员变量)的访问权限(范围): 公开级别:用 public 修饰,对外公开 受保护级别:用 protected...修饰,对子类和同一个包中的公开 默认级别:没有修饰符号,向同一个包的公开....,非私有的属性和方法可以在子类直接访问, 但是私有属性和方法不能在子类直接访问,要通过提供公共的方法去访问 这里注意的是子类是继承了所有的方法和属性,包括私有方法。...我们给name提供公共方法子类的公共方法来给name赋值 public class Student { //共有属性 // public String name;..., 完成的初始化 (3)当创建子类对象时,不管使用子类的哪个构造器,默认情况下总会去调用的无参构造器,如果没有提供无参构造器,则必须在子类的构造器中用 super 去指定使用的哪个构造器完成对的初始化工作

    6310

    ExtJS关于组件Component生命周期

    用以提供处理函数或者阻止组件的继续渲染。 2、设置容器:     如果没有容器被指定,默认它的对象被指定为它的容器。...3、调用onReader方法: 这是为子类执行呈现工作的一个非常重要的方法,这是一个模板方法,在子类中可以根据需来重写它的实现逻辑。...7、调用 afterRender     这是另一个模板方法子类根据逻辑需要可以重新实现或覆盖该方法。所有的子类可以通过调 superclass.afterRender.来调用方法。   ...2、调用 beforeDestroy 方法     又一个模板方法,在子类中可以重新实现和调用方法。   ...4、onDestroy 被调用     这个还是一个模板方法,在子类可以重新实现。这里需要注意的是,容器提供了一个默认的 onDestroy 实现,它会循环销毁它的成员组。

    1.2K10

    View 的绘制过程

    View:所有视图控件的基 ViewGroup:View 的子类,是容器控件,内部用于放置View Window:概况了 Android 窗口的基本属性和基本功能(抽象) PhoneWindow...:Window 的实现 DecorView: 界面的 根 View,PhoneWindow 的内部类,FrameLayout 的子类 ViewRootImpl:官方定义是 The top of a view...,大小不能超过这个值(就是定义的这种标准,当然你不按照这个标准,在自己写 onMeasure() 的时候,明明布局给的类型是 AT_MOST 你还要超过,那也没事,只是布局的样子可能就会有问题了)。...LinearLayout 是这样的,当然我们可以根据我们想要的布局来进行自定义。...onLayout 重写的时候,只需要获取 View 的实例,然后调用 View 的 layout 方法来实现布局就可以了,具体 layout 中传入的参数,是重写 onLayout 的重点。

    63020

    Android组件View绘制流程原理分析

    mView.draw(canvas); ...... } measure计算视图大小 几乎所有的组件都是继承View的,而关于view的测量工作,日常开发用得多的方法就是measure...,View希望子View的大小最多是specSize指定的值;MeasureSpec.UNSPECIFIED //未指定模式,View完全依据View的设计值来决定; View的measure方法是...ViewGroup提供了measureChild,measureChild和measureChildWithMargins方法,简化了父子View的尺寸计算。...child确定尺寸 layout原理总结 整个layout过程比较容易理解,从上面分析可以看出layout也是从顶层View向View的递归调用view.layout方法的过程,即View根据上一步...View默认不会绘制任何内容,真正的绘制都需要自己在子类中实现。 View的绘制是借助onDraw方法传入的Canvas来进行的。

    1.2K40

    JAVA基础(38) java四大特性理解(封装、继承、多态、抽象)

    方法可描述一事物可的操作。...当中成员变量同名时用super区分。    ...this代表本类对象的引用,super代表的一个空间  重写:    当中出现相同方法时,会先运行子类中的方法。...中的构造方法的特点:    在子类构造对象时,发现,访问子类构造函数时,也运行了。 原因:    在子类构造方法中的第一行有一个默认的隐士语句。...除了与历史原因有关外,把extends翻译成为继承也是有其道理的:子类扩展,将可以获得的全部属性和方法,这与汉语中得继承(辈从父辈那里获得一笔财富成为继承)具有很好的类似性。

    2.1K20

    Android6.0源码分析之View(二)--measure

    基本上到这里MeasureSpec中的重要方法和变量已经介绍完毕,总结一下就是,测量规范中规定了view对子view的要求----mode+size,并且根据mode的不同,对size进行一定的调整...(measure方法属于view的public方法),View的子类应该覆写onMeasure方法来提供一组准确有效的测量值。...,调用的onMesure方法也可以避免这个异常。...(笔者注:也就是说要么调用的onMesure方法,要么自己手动在view的onMesure方法中调用setMearsuredDimension方法,否则会抛出异常) 3>,如果在测量规范中没有规定更大的值那么基中的测量值默认是...background的大小,建议view的子类覆写onMeasure方法来进行更好的测量、 4>,如果子类覆写了该方法,那么测量view大小的任务就交给子类了,所测量的宽高不能小于view本身提供了一组

    40420

    Android6.0源码分析之View(二)--measure Android6.0源码分析之View(一)

    基本上到这里MeasureSpec中的重要方法和变量已经介绍完毕,总结一下就是,测量规范中规定了view对子view的要求----mode+size,并且根据mode的不同,对size进行一定的调整...(measure方法属于view的public方法),View的子类应该覆写onMeasure方法来提供一组准确有效的测量值。...,调用的onMesure方法也可以避免这个异常。...(笔者注:也就是说要么调用的onMesure方法,要么自己手动在view的onMesure方法中调用setMearsuredDimension方法,否则会抛出异常) 3>,如果在测量规范中没有规定更大的值那么基中的测量值默认是...background的大小,建议view的子类覆写onMeasure方法来进行更好的测量、 4>,如果子类覆写了该方法,那么测量view大小的任务就交给子类了,所测量的宽高不能小于view本身提供了一组

    78290

    Java核心-面向对象(中)

    3、实现封装3.1 实现封装必要的两步:1)将变量/属性声明为 private(私有化即只有本类才能访问,其他不能访问)2)提供公共的 getter和 setter方法来访问和更新private 私有变量的值...二、继承1、概念继承(Inheritance),是指子类继承的特征和行为,使得子类对象(实例)具有的实例域和方法,或子类从父继承方法,使得子类具有相同的行为。...2.1 概念1)向上转型(upcasting):把一个子类类型安全地变为类型(,正常转)2)向下转型(downcasting):把一个类型强制转型为子类类型(转子,要强转)2.2 instanceof...3)子类方法声明抛出的异常方法声明抛出的异常相同或者是其子类(运行时异常除外)子类方法中声明抛的异常小于或等于方法声明抛出异常子类方法可以同时声明抛出多个属于方法声明抛出异常子类...2)有引用指向子类对象:Parent p=new Child(); (,向上转型,正常转)3)有方法的重写。1.4 多态的好处及缺点1)好处为什么要使用"继承"和"多态性"?

    23012

    浅析Python面向对象编程

    继承:是指派生继承基方法和属性,并具有自己属性和特征,如:Man是Person的子类。 封装:隐藏数据和实现细节,提供对外访问方法。 多态:一个基,可以有多个派生,可以有不同的形态。...通过继承创建的新称为子类或派生,被继承的称为基或超。 Python中的继承通过 class 子类名(名): 的格式实现。 子类可以调用方法和定义自己的方法。...如果方法的功能不能满足需求,子类可以重写(overrides)方法。 如下所示:Parent表示一个,拥有自己的属性和方法。...childMethod(self): print('调用子类方法') def myMethod(self): """重写Overrides方法""" print('我是子类的...# 实例化子类对象 c.childMethod() # 调用子类方法 c.parentMethod() # 调用方法 c.setAttr(200) # 再次调用方法,设置属性 c.getAttr

    50520

    设计模式-外观模式、适配器模式、模板方法模式详解

    定义:   将一个方法转换成客户希望的另外一种要求的实现规范,使得原本由于接口不兼容而不能一起工作的那些能一起工作,这就是适配器模式。...例如,去银行办理业务一般要经过以下4个流程:取号、排队、办理具体业务、对银行工作人员进行评分等,其中取号、排队和对银行工作人员进行评分的业务对每个客户是一样的,可以在中实现,但是办理具体业务却因人而异...它把认为是不变部分的算法封装到中实现,而把可变部分算法由子类继承实现,便于子类继续扩展。  B. 它在中提取了公共的部分代码,便于代码复用。  C....中的抽象方法子类实现,子类执行的结果会影响的结果,这导致一种反向的控制结构,它提高了代码阅读的难度。 ◆3. 具体实现 (1). 模式结构  A. 抽象:负责给出一个算法的轮廓和骨架。...最后,用一个调用这些新的操作的模板方法来替换这些不同的代码。

    25710

    大数据开发应该如何学习?之JAVA特性

    1、注意事项: ①子类可以拥有的属性和方法。 ②子类可以拥有自己的属性和方法。 ③子类可以重写覆盖方法。 2、继承的优点: ①减少代码量,能很好的提高复用率。...3、 继承的缺点 继承使得多个之间具有了关系,当一个存在多个子类的时候,如果发生变化,那么这些子类会跟着一同变化,造成之间的“强耦合”关系!...,再执行本类的初始化工作。...②第一次创建Phone(,是直接继承Object,而Object是jdk提供的工具,自然不会有属性,所以Object提供了无参的构造,在执行Phone方法时,无论是无参还是有参都会先执行...多态的优点 ①可替换性,多态对一存在的代码具有可替代性 ②可扩充性:增加的子类不影响已存在的的特性的运行和操作 ③接口性:多态时超通过方法签名想子类提供了一个公共的接口,由子类来完善或者覆盖它而实现的

    37920

    抽象和接口

    但是构造方法不能用来new实例,只能用来被子类调用。 抽象只能用来继承。 抽象方法必须被子类实现。 为什么需要接口 接口就是比“抽象”还“抽象”的“抽象”,可以更加规范的对子类进行约束。...抽象提供某些具体实现,接口不提供任何实现,接口中所有方法都是抽象方法。接口是完全面向规范的,规定了一批具有的公共方法规范。 从接口的实现者角度看,接口定义了可以向外部提供的服务。...从接口的调用者角度看,接口定义了实现者能提供那些服务。 接口是两个模块之间通信的标准,通信的规范。...大家在工作以后,系统时往往就是使用“面向接口”的思想来设计系统。 如何定义接口?...方法必然是:public abstrac。 我们不加这些修饰符,也是这样。 7. 接口完全支持多继承。和的继承类似,接口扩展某个接口,将会获得接口中所定义的一切。

    1K50

    Java三大面向对象特性

    封装 封装把一个对象的属性私有化,同时提供一些可以被外界访问的属性的方法,如果属性不想被外界访问,我们大可不必提供方法给外界访问。...但是如果一个没有提供给外界访问的方法,那么这个也没有什么意义了。...继承就是子类继承的特征和行为,使得子类对象(实例)具有的实例域和方法,或子类从父继承方法,使得子类具有相同的行为。...(包括私有属性和私有方法),但是中的私有属性和方法子类是无法访问,只是拥有。...子类可以拥有自己属性和方法,即子类可以对进行扩展。 子类可以用自己的方式实现方法。 多态 多态是同一个行为具有多个不同表现形式或形态的能力。

    36310

    Java访问权限之 protected详解「建议收藏」

    访问权限特点:访问域大于子类) 若子类与基)不在同一包中,子类只能在自己的(域)中访问继承而来的protected成员,无法访问别的子类实例(即便同父的亲兄弟)所继承的protected...再者,如果测试在p2包内,由于不满足protected两种可见性(同一包内和关系),也将无法调用protected修饰的f()方法。...,但是现在有了的关系,即Test与Son1、Son2形成了兄弟关系,由于 protected受访问保护规则是很微妙的,虽然protected域对所有子类都可见,但是子类只能在自己的作用范围内访问自己继承的那个...(对象)继承的protected修饰的方法访问权限特点:访问域大于子类),因此编译通过。...(访问权限特点:访问域大于子类) 若子类与基)不在同一包中,子类只能在自己的(域)中访问继承而来的protected成员,无法访问别的子类实例(即便相同父的亲兄弟)所继承的protected

    1.2K40

    Java——Java面向对象

    2、封装:   封装(Encapsulation)是面向对象的三大特征之一,它指的是将对象的状态信息隐藏在对象内部,不允许外部程序直接访问对象内部信息,而是通过该类所提供方法来实现对内部信息的操作和访问...大部分时候,子类总是以为基础,额外增加新的成员变量和方法。但有一种情况例外:子类需要重写方法。...基于上面两点,我们就知道实例化一个子类,java程序的执行顺序是: 对象属性初始化---->对象构造方法---->子类对象属性初始化—>子类对象构造方法 下面放上一张形象的图: ?...、封装: 1、封装的概念与优点: 封装(Encapsulation)是面向对象的三大特征之一,它指的是将对象的状态信息隐藏在对象内部,不允许外部程序直接访问对象内部信息,而是通过该类所提供方法来实现对内部信息的操作和访问...多态是超通过方法签名,向子类提供了一个共同接口,由子类来完善或者覆盖它而实现的。如图8.3 所示。

    2.2K21

    Java面向对象编程三大特征 - 继承

    下面我们将例子与面向对象中的概念进行对应: 上述关系可以用子类别继承自类别来描述 类别被称作或超 子类别被称作子类 继承可以使子类具有的各种属性和方法,不需要再次编写相同的代码 2....子类可以直接使用中定义的属性和方法,也可以覆盖中的方法,表现出子类自己的特点。...子类的一个扩充和扩展,使用extends关键字来表示真的是很恰当 二、的使用 理解了相关的概念后,我们回到Java的语法中来,间通过extends来建立继承关系,结构如下: // 定义父...测试对于来说是一个处在不同包中的完全无关的,在调用时会被权限修饰符所限制,所以这里也再度明确一下:权限修饰符是根据的所在路径与之间的结构关系进行限定的,不是说在任意一个地方使用子类实例都能调用出中的属性和方法...this:指代当前对象,可以调用当前中的属性和方法 super:指代父对象,可以调用中可访问的属性和方法,包括被子类覆盖重写的方法 在使用子类实例时,如果我们想要使用某些的属性或方法,可以借助构造器和封装方法

    57931

    【JavaSE专栏61】封装,面向对象编程的三大特性之一

    其他可以通过实例化封装的来使用其提供方法,避免了重复编写相同的代码,提高了代码的重用性。 接口统一和简化操作:封装通过提供公共的方法来访问和操作数据,对外部代码提供了统一的接口。...可控性:封装可以对外部提供特定的接口,只公开需要暴露的方法,隐藏内部实现细节,提高了代码的可控性。 代码重用:封装可以将的功能封装为一个独立的模块,可以在多个地方进行复用,提高了代码的重用性。...继承:继承是一种创建新的机制,它允许一个子类)继承另一个)的属性和方法子类可以继承的公共成员变量和方法,也可以重写方法或者新增自己的成员变量和方法。...在 Java 中,多态性通过继承和方法重写实现。的引用变量可以引用子类对象,通过引用调用同名方法时,实际上会调用子类重写的方法。多态性提高了代码的灵活性和可扩展性。...封装提供的内部实现细节的隐藏,通过公共方法进行访问和修改数据,保护数据的安全性。继承可以继承的封装属性和方法子类可以在继承的基础上进行扩展和重写。

    30830

    面试官:设计原则有哪些?什么是里式替换原则?

    子类只能通过新添加方法来扩展功能,子类都可以实例化,而子类继承的方法是一样的,调用方法的地方,子类也可以调用同一个继承得来的,逻辑和一致的方法,这时用子类对象将对象替换掉时,当然逻辑一致...子类重写了,那么当被重写的方法发生了变动(比如:里面加入了鉴权方法),那么子类的重写方法没有鉴权,则会出现问题。...4> 当子类方法实现的抽象方法时,方法的后置条件(即方法的返回值)要比更严格,编译上也会提示有问题 2.3> 最佳实践 不符合LSP的最常见的情况是,子类都是可实例化的非抽象,且方法子类重新定义...重写:方法签名必定相同,返回值必定相同, 访问修饰符 " > ", 异常 " < " 三、依赖倒置原则 3.1> 名词解释 DIP:依赖倒置原则(Dependence Inversion Principle...那么,其他的汽车品牌,比如:现代、本田、丰田、比亚迪等等,为了抢占这块市场,纷纷按照国家出台的出租车标准,生产了一系列的轿车。那么,总的汽车产能一下就满足要求了。

    22130
    领券