Proxy 代理
摘要:意图 为其他对象提供一种代理以控制对这个对象的访问 动机 对一个对象进行访问控制的原因是为了只有在我们确实需要这个对象时才对它进行创建和初始化 典型例子:智能指针的实现,通过引用计数来决定“=” 复制构造函数,析构的实现,参见Smart Pointer 智能指针 结构 Proxy 保存一个引用使得代
阅读全文
posted @
2016-08-12 15:32
已停更
阅读(340)
推荐(0) 编辑
Decorator 装饰
摘要:意图 动态地给一个对象添加一些额外的职责。就增加功能来说,Decorator模式相比生成子类更为灵活。 结构 Component:定义一个对象接口,可以给这些对象动态地添加职责;(纯虚函数) ConcreteComponent:定义一个具体的Component,继承自Component,重写了Com
阅读全文
posted @
2016-08-12 10:53
已停更
阅读(186)
推荐(0) 编辑
Bridge 桥接
摘要:意图 将抽象部分与它的实现部分分离,使它们都可以独立地变化。 动机 当一个抽象可能有多个实现时,通常用继承来协调它们。抽象类定义对该抽象的接口,而具体的子类则用不同方式加以实现。但是此方法有时不够灵活。继承机制将抽象部分与它的实现部分固定在一起,使得难以对抽象部分和实现部分独立的进行修改、扩充和重用
阅读全文
posted @
2016-07-16 18:35
已停更
阅读(214)
推荐(0) 编辑
Adapter 适配器
摘要:意图 将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 动机 在软件开发中,有的时候系统的数据和行为都正确,但接口不符合,我们应该考虑使用适配器模式,目的是使控制范围之外的一个原有对象与某个接口匹配。举个例子:在开发一个模块的时
阅读全文
posted @
2016-07-16 16:11
已停更
阅读(224)
推荐(0) 编辑
Iterator 迭代器
摘要:意图 提供一种方法顺序访问一个聚合对象中各个元素 , 而又不需暴露该对象的内部表示。 动机 一个聚合对象, 如列表(list), 应该提供一种方法来让别人可以访问它的元素,而又不需暴露它的内部结构 迭代器类定义了一个访问该列表元素的接口。迭代器对象负责跟踪当前的元素 ;即, 它知道哪些元素已经遍历过
阅读全文
posted @
2016-07-16 10:19
已停更
阅读(234)
推荐(0) 编辑
Strategy 策略模式
摘要:意图 定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化。 动机 策略模式为了适应不同的需求,只把变化点封装了,这个变化点就是实现不同需求的算法,但是,用户需要知道各种算法的具体情况。就像上面的加班工资,不同的加班情况,有不同的算法。我们不能在程
阅读全文
posted @
2016-07-15 14:51
已停更
阅读(252)
推荐(0) 编辑
Observer 观察者
摘要:意图 定义对象间的一种一对多的依赖关系 ,当一个对象的状态发生改变时, 所有依赖于它的对象都得到通知并被自动更新。 动机 一致性,松耦合 需要维护相关对象间的一致性。我们不希望为了维持一致性而使各类紧密耦合,因为这样降低了它们的可重用性。 比如:Excel中制作测试数据的折线图、饼状图和柱状图,以直
阅读全文
posted @
2016-07-15 11:07
已停更
阅读(642)
推荐(0) 编辑
工厂模式总结(简单工厂,工厂方法,抽象工厂)
摘要:工厂模式属于创建型模式,大致可以分为三类,简单工厂模式、工厂方法模式、抽象工厂模式。 通过两个例子讲解这三种工厂模式 示例一 简单工厂模式 首先介绍简单工厂模式,它的主要特点是需要在工厂类中做判断,从而创造相应的产品。当增加新的产品时,就需要修改工厂类。有点抽象,举个例子就明白了。有一家生产处理器核
阅读全文
posted @
2016-07-14 20:24
已停更
阅读(2446)
推荐(0) 编辑
Abstract Factory 抽象工厂
摘要:意图 提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。 适用性 一个系统要独立于它的产品的创建、组合和表示时 结构 参与者 AbstractFactory:声明一个创建抽象产品对象的操作接口 ConcreteFactory:实现创建具体产品对象的操作 AbstractProduc
阅读全文
posted @
2016-07-14 14:46
已停更
阅读(201)
推荐(0) 编辑
Factroy 简单工厂
摘要:意图 定义一个用于创建对象的接口,让子类决定实例化哪一个类。 Factory Method使一个类的实例化延迟到其子类。 动机 框架使用抽象类定义和维护对象之间的关系。这些对象的创建通常也由框架负责。框架必须实例化类,但是它只知道不能被实例化的抽象类。 适用性 当一个类不知道它所必须创建的对象的类的
阅读全文
posted @
2016-07-14 10:58
已停更
阅读(368)
推荐(0) 编辑
Singleton 多线程
摘要:单例模式 何为单例模式,在GOF的《设计模式:可复用面向对象软件的基础》中是这样说的:保证一个类只有一个实例,并提供一个访问它的全局访问点。首先,需要保证一个类只有一个实例;在类中,要构造一个实例,就必须调用类的构造函数,如此,为了防止在外部调用类的构造函数而构造实例,需要将构造函数的访问权限标记为
阅读全文
posted @
2016-07-14 10:48
已停更
阅读(400)
推荐(0) 编辑
Singleton 单例模式
摘要:意图 保证一个类仅有一个实例,并提供一个访问它的全局访问点。 动机 让类自身负责保存它的唯一实例。这个类可以保证没有其他实例可以被创建(通过截取创建新对象的请求) ,并且它可以提供一个访问该实例的方法。这就是Singleton模式。 适用性 当类只能有一个实例而且客户可以从一个众所周知的访问点访问它
阅读全文
posted @
2016-07-14 10:40
已停更
阅读(335)
推荐(0) 编辑
设计模式总结
摘要:本分类博文主要总结自《设计模式:可复用面向对象软件的基础》以及C++设计模式系列 分类 设计模式依据其目的可分为 创建型:与对象的创建有关 结构型:处理类或对象的组合 行为型:对类或对象怎样交互和怎样分配职责进行描述 常用的设计模式 创建型:工厂(简单工厂,工厂方法,抽象工厂),单例, 结构型:适配
阅读全文
posted @
2016-07-14 10:03
已停更
阅读(221)
推荐(0) 编辑