CH02_交给子类

Template Method模式

组成模板的方法被定义在父类中,由于这些方法是抽象方法,所以只查看父类的代码是无法知道这些方法最终会进行何种具体处理的。唯一能知道的就是父类如何调用这些方法。

类图

在这里插入图片描述

说明

  • AbstractClass(抽象类)

    AbstractClass角色不仅负责实现模板放大,还负责在模板方法中使用到的抽象方法。这些抽象方法由子类ConcreteClass角色负责实现。

  • ConcreteClass(具体类)

    该角色负责具体实现AbstractClass角色中定义的抽象方法。这里实现的方法将会在AbstractClass角色的模板方法中被调用。

其他

Template Method模式充分体现了OO思想中继承与多态,父类负责定义抽象函数,子类负责实现这些函数。实际调用过程中用父类实例代替子类实例,以体现父类的多态行为。

Factory Method 模式

在Factory Method模式中,父类决定实例的生成方式,但并不决定所要生成的具体的类,具体的处理全部交给子类负责。这样就可以将生成实例的框架(framework)和实际负责生成实例的类解耦。

类图

在这里插入图片描述

说明

  • Product(产品)

    Product角色属于框架这一方,是个抽象类。它定义了在Factory Method模式中生成的那些实例所持有的接口,但具体的处理则有子类ConcreteProduct角色决定。

  • Creater(创建者)

    Creater角色属于框架这一方,它是负责生成Product角色的抽象类,但具体的处理由子类ConcreteCreator角色决定。Creater角色对实际负责生成实例的ConcreteCreater角色一无所知,它唯一知道的就是只要调用Product角色和生成实例的方法(factoryMethod)。不用new关键字来生成实例,而是调用生成实例的专用方法来生成实例,这样就可以防止父类与其他具体的类耦合。

  • ConcreteProduct(具体的产品)

    ConcreteProduct角色属于具体加工这一方,它决定了具体的产品。

  • ConcreteCreater(具体的创建者)

    Concrete Creater角色属于具体加工这一方,它负责生成具体的产品。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/225005.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vue路由跳转页面刷新

案例使用映射路由 百度的时候各种操作就是没有注意keepAlive,发现那个为缓存开启之后前端有个小后台Vue生命周期函数失效。同一个页面刷新时这个keep Alive需要关闭。

二十章多线程

概念 有很多工作是可以同时完成的,这种思想放在Java中被称为并发,并发完成每一件事被称为线程。 程序员可以在程序中执行多个线程,每一个线程完成一个功能//与其他线程并发执行,这种机制被称为多线程,并不算所有编程…

10.索引

一.索引简介 索引用于快速找出在某个列中有一特定值的行。 不使用索引,MySQL必须从第1条记录开始读完整个表,直到找出相关的行。表越大,查询数据所花费的时间越多。 如果表中查询的列有一个索引,MySQL能快速到达某个位置去搜寻…

鞋厂ERP怎么样?工厂要如何选项契合的ERP

鞋帽这类商品是我们的生活必需品,存在款式多、尺码多、用料复杂、营销渠道多、销售策略和价格策略灵活等情况,伴随电商等行业的发展,鞋帽行业的管理模式也在发生变化。 鞋厂规模的不同,遇到的管理问题各异,而如何解决…

[英语学习][3][Word Power Made Easy]的精读与翻译优化

[序言] 这次翻译校验, 难度有点大, 原版中英翻译已出现了严重地偏差. 昨晚11点开始阅读如下段落, 花费了1个小时也没有理解原作者的核心表达, 索性睡觉了. 今早学习完朗文单词之后, 9点半开始继续揣摩. 竟然弄到了中午11点30, 终于明白原作者要表达的意思了. 废话不多说&#x…

「Verilog学习笔记」非整数倍数据位宽转换8to12

专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点,刷题网站用的是牛客网 要实现8bit数据至12bit数据的位宽转换,必须要用寄存器将先到达的数据进行缓存。8bit数据至12bit数据,相当于1.5个输入数据拼接成一个输出数据&#…

Find My电容笔|苹果Find My技术与电容笔结合,智能防丢,全球定位

随着平板电脑的流行,有不少厂商都投入到了电容笔的开发当中,现在的电容笔不仅在精度上有了提高,甚至在笔触和压感上的研究都有进步。电容笔是利用导体材料制作的具有导电特性、用来触控电容式屏幕完成人机对话操作用的笔,电容笔通…

Mysql 不执行索引问题与优化

难以查找的隐藏问题 及 解决办法: 问题总结:

计算机网络:网络层

0 本节主要内容 问题描述 解决思路 1 问题描述 两大问题(重点,也是难点): 地址管理;路由选择。 1.1 子问题1:地址管理 网络上的这些主机和节点都需要使用一种规则来区分,就相当于是一种身…

ESP32-Web-Server编程-CSS 基础 2

ESP32-Web-Server编程-CSS 基础 2 概述 如上节所述,可以使用外部 CSS 文件来修饰指定的 HTML 文件。 外部引用 - 使用外部 CSS 文件。 当样式需要被应用到很多页面的时候,外部样式表将是理想的选择。使用外部样式表,就可以通过更改一个文件…

JAVA进阶之路JVM-2:类加载机制,类的生命周期,类加载过程,类加载时机,类加载器,双亲委派模型,对象创建过程

JVM类加载机制 类加载 ​ 在JVM虚拟机实现规范中,通过ClassLoader类加载把*.class字节码文件(文件流)加载到内存,并对字节码文件内容进行验证,准备,解析和初始化,最终形成可以被虚拟机直接使用…

猫头虎分享已解决Bug || Environment for Full Errors and Additional Helpful Warnings

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页: 🐅🐾猫头虎的博客🎐《面试题大全专栏》 🦕 文章图文并茂&#x1f996…