- 博客(15)
- 资源 (15)
- 收藏
- 关注
原创 创建型设计模式---原型模式(Prototype)
Prototype模式用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。(1)当我们的对象类型不是开始就能确定的,而这个类型是在运行期确定的话,那么我们通过这个类型的对象克隆出一个新的对象比较容易一些(2)有的时候,我们需要一个对象在某个状态下的副本,此时,我们使用原型模式是最好的选择;例如:一个对象,经过一段处理之后,其内部的状态发生了变化;这个时候,我们需要一
2014-08-27 14:04:40 431
原创 创建型设计模式---构建模式(Builder)
builder模式:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示适用场景:(1)当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时(2)当构造过程必须允许被构造的对象有不同的表示时#include #include #include using namespace std;class Vehicle{public:
2014-08-26 17:08:34 455
原创 行为设计模式---状态模式(State)
状态模式:允许一个对象在其内部状态改变的时候改变其行为#include using namespace std;class Worker;class State{public: virtual ~State() {} virtual void showStatus(Worker *worker) = 0;};class Workd
2014-08-22 15:20:47 482
原创 dump analyze
0:000> !analyze -vFAULTING_IP: +000000000 ?? ???EXCEPTION_RECORD: ffffffff -- (.exr 0xffffffffffffffff)ExceptionAddress: 00000000 ExceptionCode: 80000003 (Break instruc
2014-08-21 14:20:19 2557
原创 行为设计模式---命令模式(Command)
命令模式:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作(1)Command,用来声明执行操作的接口(2)ConcreteCommand,将一个接收者对象绑定于一个操作,调用接收者相应的操作,以实现Execute(3)Invoker类,要求该命令执行这个请求(4)Receiver类,知道如何实施与执行一个与请求相
2014-08-20 15:18:28 456
原创 行为设计模式---迭代器模式(Iterator)
iterator模式:提供一种方法顺序访问一个聚合对象中各个元素,而又不需暴露该对象的内部表示#include #include using namespace std;templateclass Iterator;templateclass AggregateIter;templateclass Aggregate{public: v
2014-08-18 15:39:49 402
原创 创建型设计模式---工厂模式
(1)简单工厂:只有一个工厂类,在工厂中根据产品的类型每次只能生产指定类型的产品 class Factory { public: ProductBase * createProduct(char type) { switch(type) { case 'A' return new ProductA();
2014-08-15 16:27:32 372
原创 结构型设计模式---外观模式(Facade)
外观模式(Facade):为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。假设有一个抵押系统,存在三个子系统,银行子系统(查询是否有足够多的存款)、信用子系统(查询是否有良好的信用)以及贷款子系统(查询有无贷款劣迹),只有这三个子系统都通过时才可进行抵押。当客户申请抵押贷款时,他需要分别去这三个子系统办理相关手续,
2014-08-14 15:09:12 438
原创 结构型设计模式---享元模式(Flyweight)
享元模式以共享的方式高效地支持大量的细粒度对象。享元对象能做到共享的关键是区分内蕴状态(Internal State)和外蕴状态(External State)。内蕴状态是存储在享元对象内部并且不会随环境改变而改变,因此内蕴状态并可以共享。外蕴状态是随环境改变而改变的、不可以共享的状态。享元对象的外蕴状态必须由客户端保存,并在享元对象被创建之后,在需要使用的时候再传入到享元对象
2014-08-14 14:20:55 340
原创 结构型设计模式---适配器模式(adapter)
SGI STL stack系以deque作为底部容器完成其所有工作,而具有这种“修改某物接口,形成另一种风貌”之性质者,称为适配器(adapter),stack被归类为 container adapter,这种容器适配器还有queue, priority_queue,它们没有迭代器。适用情况:使用一个已经存在的类,如果它的接口和你实际要求的不一致时,可以考虑使用适配器模式#incl
2014-08-13 11:24:05 411
原创 结构型设计模式---桥接模式(Bridge)
桥接模式:使用组合的方式将抽象化(Abstraction)与实现化(Implementation)分离,使得二者可以独立地变化。这样的好处是抽象和实现可以分别独立地变化,系统的耦合性也得到了很好的降低.Bridge.h#ifndef _BRIDGE_H_#define _BRIDGE_H_class TimeImp{public: TimeImp(int hr, in...
2014-08-12 15:39:34 445
原创 结构型设计模式---组合模式(Composite)
组合模式:将对象组合成树形结构以表示“部分-整体”的层次结构。Composite使得用户对单个对象和组合对象的使用具有一致性。适用场景:(1)所要表示的对象具有部分-整体的层次结构(2)用户可以忽略组合对象与单个对象的不同,统一地使用组合结构中的所有对象Composite.h#ifndef _COMPOSITE_H_#define _COMPOSITE_H_#i
2014-08-12 14:07:08 356
原创 结构型设计模式---装饰者模式(Decorator)
装饰者模式动态地给对象添加新职责,装饰者提供了比继承更有弹性的替代方案适用场景:(1)需要扩展一个类的功能,或给一个类增加附加责任。 (2)需要动态地给一个对象增加功能,这些功能可以再动态地撤销。 (3)需要增加由一些基本功能的排列组合而产生的非常大量的功能,从而使继承关系变得不现实。优点:(1)Decorator模式与继承关系的目的都是要扩展对象的功能,但是Decorat
2014-08-12 11:04:44 443
原创 结构型设计模式---代理模式(Proxy)
代理模式: 为其他对象提供一种代理,并以控制对这个对象的访问。(Provide a surrogate or placeholder for another object to control access to it. )而对一个对象进行访问控制的一个原因是为了只有在我们确实需要这个对象时才对它进行创建和初始化。它是给某一个对象提供一个替代者(占位者),使之在client对象和subje
2014-08-07 15:20:49 448
原创 最大流最小割---FordFulkerson
1网络流的基本概念 一、流网络:网络或容量网络指的是一个连通的赋权有向图 D= (V、E、C) , 其中V 是该图的顶点集,E是有向边(即弧)集,C是弧上的容量。此外顶点集中包括一个起点(源点)s和一个终点t(汇点)。网络上的流就是由起点流向终点的可行流,这是定义在网络上的非负函数,它一方面受到容量的限制,另一方面除去起点和终点以外,在所有中途点要求保持流入量和流出量是平衡的。
2014-08-05 12:38:39 1321
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人