学习日记之模板方法模式和 Effective C++

学习日记之模板方法模式和 Effective C++

大家好,又见面了,我是全栈君。

模板方法模式:

定义:定义一个操作中的算法的骨架。而将一些步骤延伸到子类中。模板方法使得子类能够不改变算法的结构就可以重定义该算法的某些特定步骤。

(1),用了继承,而且肯定这个继承有意义的情况下。就应该要成为子类的模板,所以反复的代码都应该提升到父类中,而不是让每一个子类去反复。

(2)。当我们要完毕某一个细节层次一致的过程或者一系列步骤,但其个别步骤在更具体的层次上的实现可能不同一时候。我们通常考虑模板方法模式来处理。

(3),模板方法模式通过把不变的行为搬移到超类。去除子类中的反复代码来体现它的优势。

(4)。党不变的和可变的行为在方法的子类实现中混合在一起的时候。不变的行为就会在子类中反复出现。我们通过模板方法模式把这些行为搬移到单一的地方,这样就帮助子类摆脱反复的不变形为的纠缠。

Effective C++:

1:设计 class 宛如设计 type

Class的设计就是 type 的设计。在定义一个新的 type 之前,请确定你已经考虑好下面覆盖的讨论主题。(Oh , my god ! )

(1)。新类型的对象该怎样创建和销毁?

(2)。对象的初始化和对象的赋值有什么样的区别?

(3),新类型的对象假设被 passed by value 。意味着什么?

(4),什么是新类型的合法值?

(5),你的新类型须要配合某个继承图系(inheritance graph)吗?

(6),你的新类型须要什么样的转换?

(7),什么样的操作符和函数对此新类型而言是合理的?

(8)。什么样的标准函数应该被驳回?

(9),谁该取用新类型的成员?

(10),什么是新类型的“未声明接口?

(11),你的新类型有多么一般化?

(12),你真的须要一个新类型么?

2:宁以 pass-by-reference-to-const 替换 pass-by-value

(1),尽量以 pass-by-reference-to-const 替换 pass-by-value 。前者通常比較高效,而且能够避免分割问题 (slicing problem)。

(2)。以上规则并不适用内置类型,以及 STL 的迭代器和函数对象。对他们而言,往往 pass-by-value 比較合适。

3:必须返回对象时,别妄想返回其 reference

(1)。绝不要返回 pointer 或 reference 指向一个 local stack 对象,或返回 reference 指向一个 heap-allocated 对象,或返回 pointer 或 reference 指向一个 local static 对象而有可能同一时候须要多个这种对象。单线程中合理返回 reference 指向一个 local static 对象。可參考单例模式。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/116038.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • disk boot failure ,insert sysytem disk and press enter解决方法

    disk boot failure ,insert sysytem disk and press enter解决方法故障分析与处理从现象上看硬盘可能是损坏了,如果在无法启动前的最后一次关机是按照正常程序退出。将硬盘拆下来连接到另外一台机器上,开机启动后进入CMOS设置主菜单,选择“IDE HDD AUTO DETECTION”栏,检测到硬盘参数,能正常进入硬盘。将硬盘装回到原来的机器上,进入CMOS设置后能自动检测到硬盘的参数,恢复了正常启动。关机时按照正常程序退出,而下一次开机时无法用硬盘启动并且无

    2022年7月13日
    18
  • 经济管理学中常用的模型分析法

    经济管理学中常用的模型分析法经济管理学中常用的模型分析法常用的分析模型有:波特五力模型、波士顿矩阵、鱼骨分析法、5W1H分析法、麦肯锡7S模型、杜邦分析法、营销漏斗模型、可行性分析、绩效分析;SMART原则、SWOT分析、PEST分析法、GROW模型、3C理论、顾客细分、事故树分析法。比较系统的模型分类有:第一篇:战略与组织工具1.SWOT分析:战略规划的经典分析工具2.PEST分析:组织外部宏观环境分析工具3.BCG矩阵法…

    2022年5月27日
    109
  • fflush和fsync的联系和区别「建议收藏」

    fflush和fsync的联系和区别「建议收藏」1.提供者fflush是libc.a中提供的方法,fsync是系统提供的系统调用。2.原形fflush接受一个参数FILE*.fflush(FILE*);fsync接受的时一个Int型的文件描述符。fsync(intfd);3.功能fflush:是把C库中的缓冲调用write函数写到磁盘[其实是写到内核的缓冲区]。fsync:是把内核缓冲刷到磁盘上。c库

    2022年5月13日
    41
  • mysql全文索引是什么_Mysql中的全文索引

    以前只是简单听说过Mysql有全文索引,但是一直没有认真去了解过。最近在《MYSQL必知必会》中学习到这个知识点,做下记录。首先,什么是全文索引?简单来说,全文索引其实就是类似于LIKE语句,把包含一定的字符串的的行记录挑选出来。那么问题来了,既然只是达到这个需求的话使用LIKE就行了,LIKE不行的话也还能使用正则表达式,为什么还要大费周章弄个全文索引出来呢?书上提到了三个原因:①性能,Like…

    2022年4月9日
    78
  • 【离散数学】单射、满射与双射

    【离散数学】单射、满射与双射本文目录1、什么是映射?1、什么是映射?我们考虑这样的关系:对于集合X中的每一个元素,都有唯一的属于集合Y中的元素被其所指向,我们就称这样的关系叫映射(英:mapping,日:写像(しゃぞう))。这是用很通俗的语言解释定义的映射,而相信大家也都在高中数学必修1里面学过,对映射这个概念想必也都不陌生吧!从这个定义中,你能get到什么信息呢?①“X集合中的每一个元素”:如果有集合X的元素不对应集合Y的某个元素的,则不是映射。②“都有唯一的Y与之对应”:如果有集合X的元素同时指向了集合Y中的两个以上个元

    2022年6月10日
    114
  • python小项目:3、九九乘法表与斐波那契数列

    python小项目:3、九九乘法表与斐波那契数列

    2021年10月5日
    62

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号