
程序设计与实现
hjfjoy
这个作者很懒,什么都没留下…
展开
-
最快排序和搜索算法的最简代码实现
快速排序算法和二分搜索算法 算法主要分为排序算法、搜索算法、图算法。图算法我用得不多,没有发言权,本文就不说了。 排序算法中最快的是快速排序算法,搜索算法中最快的是二分搜索算法。我也最喜欢这2个算法。 因为,它们是使用递归实现的,代码简洁清晰,效率又非常高。 根据我的理解,算法的本质就是数学。根据输入和设定的目标原创 2009-04-08 11:58:00 · 618 阅读 · 0 评论 -
Memento(备忘录)
作用:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态.这样以后就可将该对象恢复到原先保存的状态. typedef std::string State;class Memento;class Originator{public:Originator(const State& rState);Originator();~Originator();Memento* C转载 2009-07-12 16:17:00 · 384 阅读 · 0 评论 -
Mediator(中介者)
用一个中介对象来封装一系列对象的交互。中介者使得各对象不需要显式相互引用,从而使其松散耦合,而且可以独立地改变它们之间的交互。Mediator模式解决了一个问题,多个类相互引用相互,相互影响,这时候类的关系模型是复杂的,一个类对象的变化会导致其他类对象的变化,这种场景有点连锁反应的意思。下面有一段代码class CutMenuItem { TextArea text转载 2009-07-12 15:10:00 · 417 阅读 · 0 评论 -
Command(命令)
作用:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤消的操作. class Command{public:virtual ~Command() {}virtual void Execute() = 0;};class Receiver{public:void Action();};class Invoker{public:Invok转载 2009-07-09 11:00:00 · 709 阅读 · 0 评论 -
ChainOfResponsibility(职责链)模式
作用:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系.将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止. 解析:这个模式把可以处理一个请求的对象以链的形式连在了一起,让这些对象都有处理请求的机会。好比原来看古装电视中经常看到皇宫中召见某人的时候,太监们(可以处理一个请求的对象)就会依次的喊:传XX……这样一直下去直到找到这个人为止。Chai转载 2009-07-08 16:14:00 · 416 阅读 · 0 评论 -
Decorator模式
作用:动态地给一个对象添加一些额外的职责。就增加功能来说,Decorator 模式相比生成子类更为灵活。 class Component{public:Component(){}virtual ~Component(){}// 纯虚函数,由派生类实现virtual void Operation() = 0;};// 抽象基类,维护一个指向Component 对象的指针class Decor转载 2009-07-03 22:07:00 · 374 阅读 · 0 评论 -
Proxy(代理)模式
作用:为其他对象提供一种代理以控制对这个对象的访问。Proxy其实是基于这样一种时常使用到的技术-某个对象直到它真正被使用到的时候才被初始化,在没有使用到的时候就暂时用Proxy作一个占位符。class Subject{public:Subject(){}virtual ~Subject(){}virtual void Request() = 0;};// 真正使用的实体class Rea转载 2009-07-06 10:55:00 · 521 阅读 · 0 评论 -
Prototype(原型)---对象创建型模式
作用:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 解析:主要面对的问题是:“某些结构复杂的对象”的创建工作;由于需求的变化,这些对象经常面临着剧烈的变化,但是他们却拥有比较稳定一致的接口。假设有一家店铺是配钥匙的,他对外提供配制钥匙的服务(提供Clone接口函数),你需要配什么钥匙它不知道只是提供这种服务,具体需要配什么钥匙只有到了真正看到钥匙的原型才能配好.原创 2009-06-27 00:36:00 · 457 阅读 · 0 评论 -
Composite(组合)
作用:将对象组合成树形结构以表示“部分-整体”的层次结构。Composite使得用户对单个对象和组合对象的使用具有一致性。 #include // 组合中的抽象基类class Component{public:Component(){}virtual ~Component(){}// 纯虚函数,只提供接口,没有默认的实现virtual void Operation() = 0;// 虚函数转载 2009-07-01 20:11:00 · 368 阅读 · 0 评论 -
Bridge(桥接)
作用:将抽象部分与它的实现部分分离,使它们都可以独立地变化。 class Abstraction{public:Abstraction(Implementor* pImplementor);virtual ~Abstraction();void Operation();protected:Implementor* m_pImplementor;}; // 为实现Abstractio转载 2009-06-29 23:53:00 · 485 阅读 · 0 评论 -
Adapter(适配器)
作用:将一个类的接口转换成客户希望的另外一个接口。Adapt 模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。实现:Adapt模式有两种实现办法,一种是采用继承原有接口类的方法,一种是采用组合原有接口类的方法,这里采用的是第二种实现方法. class Target{public:Target(){}virtual ~Target() {}virtual void Reques转载 2009-06-28 23:58:00 · 358 阅读 · 0 评论 -
Builder(生成器)---对象创建型模式
作用:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 解析:Builder 接口下面有不同组成部分,但组成部分的装配方式是一样的,比方说一辆单车,都是由车轮车座等等的构成的(一个对象不同的组成部分),不同的品牌生产出来的也不一样(不同的构建方式).虽然不同的品牌构建出来的单车不同,但是构建的过程还是一样的。附:软件系统中,有时候面临着“一个复杂原创 2009-06-25 21:12:00 · 432 阅读 · 0 评论 -
Iterator(迭代器)模式
作用:提供一种方法顺序访问一个聚合对象中各个元素,,而又不需暴露该对象的内部表示.在STL的实现中,所有的迭代器(Iterator)都遵照了这套规范。另外在多种遍历方法中,如前序,后序,中序以及广度优先遍历等,都可以用不同的迭代器类来支持。 typedef int DATA;class Iterater;// 容器的抽象基类class Aggregate{public:virtual转载 2009-07-10 11:12:00 · 512 阅读 · 0 评论