上一页 1 ··· 6 7 8 9 10 11 12 下一页
  2013年8月9日
摘要: 一. 访问者模式定义:表示一个作用于某对象结构中的各元素的操作。它你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。结构如下:二. 举例假设有一项科学实验,是用来对比两种种子在不同环境下的生长情况。两种种子,一种是普通的种子(Seed_A),一种是太空运回的种子(Seed_B)。生长环境,分别是在多雨环境下(Rain_Status),阳光环境下(Sun_Status)等等。结构如下:代码如下:[cpp] view plaincopy//状态classStatus{public:virtual~Status(){}virtualvoidVisitSeed_A(Seed*elm){}vi 阅读全文
posted @ 2013-08-09 12:50 any91 阅读(224) 评论(0) 推荐(0) 编辑
摘要: 一. 解释器模式定义:给定一个语言,定义它的文法的一种表示,并定一个解释器,这个解释器使用该表示来解释语言中的句子。结构如下:代码如下:[cpp] view plaincopy//包含解释器之外的一些全局信息classContext{public:Context(){}~Context(){}};classAbstractExpression{public:virtual~AbstractExpression(){}virtualvoidInterpret(constContext&c){}protected:AbstractExpression(){}};//终结符表达式classT 阅读全文
posted @ 2013-08-09 12:48 any91 阅读(277) 评论(0) 推荐(0) 编辑
摘要: 一. 举例说明我们知道,在 STL 里提供 Iterator 来遍历 Vector 或者 List 数据结构。Iterator 模式也正是用来解决对一个聚合对象的遍历问题,将对聚合的遍历封装到一个类中进行,这样就避免暴露这个聚合对象的内部表示的可能。例如在 STL 里有如相下结构:二. 迭代器模式定义:提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示。比较经典的例子是 STL 里的 for_each 操作:[cpp] view plaincopy//functioncalledforeachelementvoidprint(intelem){coutcoll;INSERT 阅读全文
posted @ 2013-08-09 12:47 any91 阅读(203) 评论(0) 推荐(0) 编辑
摘要: 一. 举例说明我们知道,在多线程程序中,多个用户都给系统发 Read 和 Write 命令。这里有几点需要说明:1. 首先明确一点,所有的这些 Read 和 Write 命令都是调用一个库函数。2. 用户并不需要知道别的用户的存在,也不管别人发不发命令,只管自己发命令,最后给结果即可。3. 这些命令先是到了一个消息队列里面,然后由消息队列调用库函数。结构图如下:代码如下:[cpp] view plaincopyclassCommand;//实施与执行类classReciever{public:voidAction(){cout_rev=rev;}~Read_Command(){deleteth 阅读全文
posted @ 2013-08-09 12:46 any91 阅读(145) 评论(0) 推荐(0) 编辑
摘要: 一. 举例比如,现在中图和日本在关于钓鱼岛问题上存在争端。这时,联合国就会站出来,做为调解者,其实也没什么好调解的,钓鱼岛本来就是中国的,这是不争的事实!联合国也就是个传话者、发言人。结构图如下:代码如下:[cpp] view plaincopy//抽象国家classCountry{protected:Mediator*m_mediator;//中介public:virtualvoidSetMediator(Mediator*mediator){}//设置中介virtualvoidSendMessage(stringmessage){}//向中介发信息virtualvoidGetMessage 阅读全文
posted @ 2013-08-09 12:45 any91 阅读(233) 评论(0) 推荐(0) 编辑
摘要: 一. 备忘录模式定义:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。结构图:使用范围:Memento 模式比较适用于功能比较复杂的,但需要维护或记录属性历史的类,或者需要保存的属性只是众多属性中的一小部分时,Originator 可以根据保存的 Memento 信息还原到前一状态。代码:[cpp] view plaincopy//备忘录类//负责存储Originator对象的内部状态classMemento{//注意:备忘录类中的方法是私有的!!!!!!!private://这是最关键的地方,将Originator为fri 阅读全文
posted @ 2013-08-09 12:42 any91 阅读(169) 评论(0) 推荐(0) 编辑
摘要: 一. 举例一般汽车发动机工作时有四种状态,吸气、压缩、做功和排气。在运行时,不同的状态会有不同的行为,当前的状态机在适当的时候会过渡到下一状态。其实用户在使用时根本不知道当前的状态,也无需知道当前的状态。用户只需要给发动机一个初始状态,最后得到一个停止状态就行了。结构图如下:代码如下:[cpp] view plaincopy//状态classState{public:virtualvoidOperation(Work*work){}};//工作classWork{private:State*m_state;//目前状态intm_step;//步骤public:Work(State*state) 阅读全文
posted @ 2013-08-09 12:39 any91 阅读(283) 评论(0) 推荐(0) 编辑
摘要: 一. 举例说明以前做了一个程序,程序的功能是评价几种加密算法时间,程序的使用操作不怎么变,变的是选用各种算法。结构如下:Algorithm:抽象类,提供算法的公共接口。RSA_Algorithm:具体的RSA算法。DES_Algorithm:具体的DES算法。BASE64_Algorithm:具体的Base64算法。在使用过程中,我只需要对外公布Algorithm_Context这个类及接口即可。代码实现:[cpp] view plaincopy//策略类classAlgorithm{public:virtualvoidcalculate()=0;};//具体RSA算法classRSA_Alg 阅读全文
posted @ 2013-08-09 12:38 any91 阅读(168) 评论(0) 推荐(0) 编辑
摘要: 一. 举例说明还以我以前做的文件系统(FileSys)为例:文件系统是一个独立的系统,它提供一套核心的文件操作。除了文件系统,还有四个子系统,分别是杀毒子系统(KillVirus),压缩子系统(ZipFile),加密子系统(EncrypeFile)和刻录子系统(BurnCD),这四个子系统相互独立,但又可以做为主系统功能的一部分。假设客户需要我这个文件系统有两种执行模式,一种是完全模式,一种是简单模式。完全模式,要求杀毒子,压缩,加密和刻录功能都有。简单模式,要求只要有杀毒,刻录就行了。第一种设计:文件系统自己管理所有的子系统,并实现客户的需求。最开始的话,我们是按上面的结构来设计的,这个文件 阅读全文
posted @ 2013-08-09 12:37 any91 阅读(169) 评论(0) 推荐(0) 编辑
摘要: 一. 举例说明我们有时打开一个网站时会发现有这样的现象,网站上的文字都显示出来了,但是上面的图片还没显示,要等一会才能显示。这些未打开的图片的位置上,还是会有图片框和一些等待的信息的,这就是代理模式的应用,此时的代理存储了真实图片的路径和尺寸也用来显示一些友好的信息。结构图如下:代码实现:[cpp] view plaincopy//基类classBigImage{public:BigImage(stringname):m_imageName(name){}virtual~BigImage(){}virtualvoidShow(){}protected:stringm_imageName;};/ 阅读全文
posted @ 2013-08-09 12:34 any91 阅读(236) 评论(0) 推荐(0) 编辑
上一页 1 ··· 6 7 8 9 10 11 12 下一页