简单工厂模式VS工厂方法模式:

简单工厂模式:最大长处在于工厂类中必须包括必要的逻辑推断,依据client选择条件动态实例化相关类,对于client来说,去除了与详细产品的依赖。

工厂方法模式(Factory Method)。定义一个用于创建对象的接口。让子类决定实例化哪一个类。工厂方法模式使一个类的实例化延迟到其子类。

工厂方法模式实现时。client须要决定实例化哪一个工厂来实现对应的类。选择推断的问题还是存在的,也就是说,工厂方法模式把简单工厂的内部逻辑推断移动了client代码来进行。

想要加功能,在简单工厂模式中,须要改工厂类,而若使用工厂方法模式,须要改client。

Effective C++:

1:别让异常逃离析构函数

(1)。析构函数绝对不能吐出异常。假设一个被析构函数调用的函数可能抛出异常。析构函数必须捕捉不论什么异常,然后吞下他们或者结束程序。

(2)。假设客户须要对某个操作函数执行期间抛出的异常进行反应,那么class应该提供一个普通函数(而非在析构函数中)执行该操作。

2:决不在构造或者析构函数中调用virtual函数

(1)。在构造或者析构中绝不要调用virtual函数。由于这类调用绝不下降到derived class(比起当前运行构造和析构的类)

3:另Oprerate=返回一个Reference to *this

4:在Operate=中处理“自我赋值”

(1),确保当对象自我赋值时 operate= 有良好行为。

当中技术包含比較“来源对象”和“目标对象”的地址、精心周到的语句顺序、以及 copy-and-swap。

(2),确定不论什么函数操作一个以上的对象。而当中多个对象是同一个对象时。其行为仍然正确。

5:复制对象时勿忘记base class 中的成分

(1),Copying 函数应该确保复制”对象内全部成员变量“以及”全部 base class 成分"。

(2)。不要尝试以某个 copying 函数实现还有一个 copying 函数。应该将共同技能放进第三个函数中,并由两个 copying 函数共同调用。

6:以对象管理资源

(1),为了防止资源泄露,请使用RAII (Resource Acquisition Is Initialization)对象。他们在构造函数中获取资源并在析构函数中释放资源。

(2),两个常被使用的RAII classes 各自是 tr1::shared_ptr 和 auto_ptr 。前者一般是较佳选择,由于其 copy 行为比較直观。若选择 auto_ptr ,复制动作会使它指向NULL。

7:在资源管理类中小心 copying 行为

(1),复制 RAII 对象必须一并复制它所管理的资源。所以资源的 copying 行为决定 RAAI 对象的 copying 行为。

(2)。普遍而常见的 RAAI class copying 行为是:抑制 copying、施行引用计数器法(reference counting)。

只是其它行为也都可能被实现。

学习日记之工厂方法模式和Effective C++相关推荐

  1. 【设计模式学习】工厂方法模式

    cpp学习设计模式:工厂方法模式 在学习工厂方法模式之前,先回忆前面学的简单工厂模式: 简单工厂模式就是将对象的创建和逻辑的判断都交给了一个工厂类去做,这样做的优点是客户端不需要知道具体产品类的类名和 ...

  2. 工厂方法模式--结合具体例子学习工厂方法模式

    在学习工厂方法模式之前,可以先学习一下简单工厂模式,网址是http://blog.csdn.net/u012116457/article/details/21650421,这里仍以水果的实例讲解. 先 ...

  3. 设计模式学习-工厂方法模式

    在上文(设计模式学习-简单工厂模式)的模拟场景中,我们用简单工厂模式实现了VISA和MASTERARD卡的刷卡处理,系统成功上线并运行良好,突然有一天老大跑来说,我们的系统需要升级,提供对一般银联卡的 ...

  4. linux车机系统怎么进工厂模式,工厂方法模式 - 跟JBPM学习设计模式_Linux编程_Linux公社-Linux系统门户网站...

    模式简介 工厂方法模式,定义一个用于创建对象的接口,让子类决定实例化那个类,其使一个类的实例化延迟到其子类中. 前边我们学习了简单工厂模式,简单工厂模式的最大优势在于工厂类中包含了必要逻辑判断,根据客 ...

  5. 设计模式学习笔记-2 创建者模式-工厂方法模式

    设计模式学习笔记-2 创建者模式-工厂方法模式 工厂模式介绍 工厂模式又称工厂方法模式,是一种创建型设计模式,其在父类中提供一个创建对象的方法,允许子类决定实例化对象的类型. 这种设计模式使Java开 ...

  6. java/android 设计模式学习笔记(3)---工厂方法模式

    这篇来介绍一下工厂方法模式(Factory Method Pattern),在实际开发过程中我们都习惯于直接使用 new 关键字用来创建一个对象,可是有时候对象的创造需要一系列的步骤:你可能需要计算或 ...

  7. 设计模式之工厂方法模式学习笔记

    定义 定义一个用于创建对象的接口,让子类去决定是实现哪个类.工厂方法使类的实例化,延迟到了子类. 结构图 角色拆解分析: 1.Product:抽象产品类 2.ConcrereProduct:具体产品类 ...

  8. 进阶学习(3.2)Factory Method Pattern 工厂方法模式

    1  类的实例化不在工厂接口里面实例化, 而是在工厂子类里面实例化 2  使用者无需关注子类工厂里面的逻辑是怎么写的, 只需要知道我调用的这个方法能实 现什么功能, 我不管具体实现 3  需要添加新功 ...

  9. Android源码学习之工厂方法模式应用

    主要内容: 工厂方法模式定义 工厂方法模式优势 工厂方法模式在Android源码中的应用 一.工厂方法模式定义 工厂方法模式定义: Define an interface for creating a ...

最新文章

  1. scrolling=no 无法根据坐标获取元素_汽车制造行业如何选择三坐标测量仪?
  2. 第二章:2.2 LTI系统解的分析
  3. 鸟哥的Linux私房菜(服务器)- 簡易 APT/YUM 伺服器設定
  4. 实现Java集合迭代的高性能
  5. 简单三层架构(登录)
  6. HashMap 为什么会导致 CPU 100%?文章看不懂?来看这个视频吧!——面试突击 006 期...
  7. 巧用路径工具做流线字
  8. c语言程序设计教程赵乘,《C语言程序设计教程》例题源码.pdf
  9. 四元数运动学笔记(1)旋转的表示
  10. Git fatal: write error: Broken pipe
  11. codeforces——961A Tetris
  12. win10电脑找不到xps查看器的详细解决步骤
  13. 把网络图片URL转化为流
  14. validation
  15. Java:打包成jar包
  16. 基于51单片机的蓝牙小车制作【新手向
  17. 现代经济感悟(4)-为什么一分钱一分货,两分货却要一块钱
  18. android+手机运行卡,手机运行卡顿,运行内存太小,在购买的时候就需要注意运行速度...
  19. 自媒体:我为什么要写一篇关于睡眠的文章?
  20. 浚县天气预报软件测试,浚县天气预报15天

热门文章

  1. python运维脚本部署jdk_Jenkins 为Jenkins添加Windows Slave远程执行python项目脚本
  2. 自动化测试与DevOps以及持续集成的关系。
  3. 超实用的8个Linux命令行性能监测工具
  4. [Hadoop]SSH免密码登录以及失败解决方案
  5. 蚂蚁金服做区块链:我们绝不发空气币,要做就服务民生!
  6. IDC:全球将步入数字经济时代,安全可控成数字经济战略关键词
  7. 能够帮助确诊乳腺癌的AI系统诞生,堪称“女性之友”
  8. Logback配置一(按时间归档)
  9. [物理学与PDEs]第1章习题14 求解 rot 方程
  10. Javascript 钩子机制——开会得出的结论