简单工厂模式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. Java设计模式学习笔记(三) 工厂方法模式

    前言 本篇是设计模式学习笔记的其中一篇文章,如对其他模式有兴趣,可从该地址查找设计模式学习笔记汇总地址 1. 简介 上一篇博客介绍了简单工厂模式,简单工厂模式存在一个很严重的问题: 就是当系统需要引入 ...

  2. JS学习十七天----工厂方法模式

    工厂方法模式 前言 今天自己看了一下自己写的部分博客,发现写的好丑....開始注意自己的排版!!可是偏亮也不是一朝一夕就完毕的,我尽量让它美丽一点.....每天美丽一点点 正文 工厂方法模式是一种实现 ...

  3. 学习日记之享元模式和Effective C++

    享元模式(Flyweight):运用共享技术有效地支持大量细粒度的对象. (1),享元模式能够避免大量很相似的开销.在程序设计中,有时须要生成大量细粒度的类实例来表示数据.假设能发现这些实例除了几个參 ...

  4. 再起航,我的学习笔记之JavaScript设计模式06(工厂方法模式)

    上一次已经给大家介绍了简单工厂模式,相信大家对创建型设计模式有了初步的了解,本次我将给大家介绍的是工厂方法模式. 工厂方法模式 工厂方法模式(Factory Method):通过对产品类的抽象使其创建 ...

  5. Java设计模式学习记录-简单工厂模式、工厂方法模式

    前言 之前介绍了设计模式的原则和分类等概述.今天开启设计模式的学习,首先要介绍的就是工厂模式,在介绍工厂模式前会先介绍一下简单工厂模式,这样由浅入深来介绍. 简单工厂模式 做法:创建一个工厂(方法或类 ...

  6. C#设计模式学习笔记:(2)工厂方法模式

    本笔记摘抄自:https://www.cnblogs.com/PatrickLiu/p/7567880.html,记录一下学习过程以备后续查用. 一.引言 接上一篇C#设计模式学习笔记:简单工厂模式( ...

  7. 【2016-10-17】【坚持学习】【Day8】【工厂方法模式】

    工厂方法模式又叫工厂模式,虚拟构造器模式 定义: 工厂父类负责定义创建产品对象的公共接口,而工厂子类则负责生成具体的产品对象目的是将产品类的实例化操作延迟到工厂子类中完成,即通过工厂子类来确定究竟应该 ...

  8. (@WhiteTaken)设计模式学习——工厂方法模式

    这个工厂方法模式,是简单工厂的延伸,不同点在于,将某个具体的类继续细分,将核心部分抽象成一个接口.而简单工厂,把核心写在了一个类上,不利于拓展. 举个例子,简单工厂中有苹果类,香蕉类,我们创建了一个F ...

  9. 设计模式C++学习笔记之五(Factory Method工厂方法模式)

      工厂方法模式的意义是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类当中.核心工厂类不再负责产品的创建,这样核心类成为一个抽象工厂角色,仅负责具体工厂子类必须实现的接口,这样进一步抽象化的 ...

随机推荐

  1. File API简介

    File API让我们可以创建文件,存储在本地文件系统的一个安全沙箱里,亦可以从其他来源读取文件,并对其进行操作   Web应用通过requestFileSystem方法来访问本地文件系统,该方法是全 ...

  2. 详细图解window环境mongodb下载、安装、配置与使用

    到官网下载最新版面mongodb安装包,(32位版本的已经取消了,只有64位的) 官网地址: https://www.mongodb.com/download-center#community 下载完 ...

  3. netty常用使用方式

    最近在重新看netty,在这里总结一些netty的一些常用的使用方式,类似于模板,方便速查. 以netty 4.1.x的API作记录,不同版本可能API有略微差异,需要注意netty5被废弃掉了(辨别 ...

  4. 运放的PID电路

    PID就是(比例(proportion).积分(integral).导数(derivative)),在工程实际中,应用最为广泛的调节器控制规律为比例.积分.微分控制,简称PID控制,又称PID调节. ...

  5. 基于Cef内核的多店铺登录器(含源码)

    公司是做电商的,在速卖通平台上开了若干店铺,每天都需要登录店铺打理,如:发货提交.获取运单号等.多个店铺的情况下,同时使用浏览器就会非常繁琐,如:要记住帐户名和密码,还要在不同店铺间切换.如果能够制作 ...

  6. HtmlImageGenerator乱码问题解决、html2image放linux上乱码问题解决

    使用html2image-0.9.jar生成图片. 在本地window系统正常,放到服务器linux系统时候中文乱码问题.英文可以,中文乱码应该就是字体问题了. 一.首先需要在linux安装字体,si ...

  7. [转载] zookeeper应用——集中配置管理系统的实现

    转载自http://blog.csdn.net/huangfengxiao/article/details/8844239 1 场景描述 参考http://www.ibm.com/developerw ...

  8. SQL Server 分页技术(存储过程)

    alter proc proc_getpage ), )='*', ), )='asc', @pagesize int , @pageindex int, )='' as begin declare ...

  9. ViewPager +无限轮播+滑动速度修改+指示小点

    养成习惯,做过代码记录总结. ViewPager 使用记录 1. ViewPage 位于V4包. 2.主要用来做banner轮播. 3.原理:适配器重用提高效率,与listview等一个原理. 下面记 ...

  10. 二、Hadoop学习笔记————架构学习

    1.成百上千台服务器组成集群,需要时刻检测服务器是否故障 2.用流读取数据更加高效快速 3.存储节点具有运算功能,省略了服务器之间来回传数据的网络带宽限制 4.一次写入,多次访问,不修改数据 5.多平 ...