• 学习日记之模板方法模式和 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 对象。可參考单例模式。

  • 相关阅读:
    Hive 中parse_url的使用
    作为首席架构师,我是如何选择并落地架构方案的?
    漫谈数据仓库之拉链表(原理、设计以及在Hive中的实现)
    纸上得来终觉浅
    年薪50万的大数据分析师养成记【摘抄】
    如果有人问你数据库的原理,叫他看这篇文章(完)
    开源大数据引擎:Greenplum 数据库架构分析
    【阿里在线技术峰会】李金波:企业大数据平台仓库架构建设思路
    ETL Automation完整安装方法_(元数据存放在mysql数据库)
    js定时器 离开当前页面任然执行的问题
  • 原文地址:https://www.cnblogs.com/yxwkf/p/5183413.html
Copyright © 2020-2023  润新知