c++设计模式
文章平均质量分 87
后打开撒打发了
有些人注定要生活在彼岸 可以亲近可以爱怜 甚至可以穷尽一生去思念 只是无法触及 有些距离 注定不能跨越 只能俩俩相望 就像有些爱只能养在心里 长在眼中 不要捧在手里 放在身边 注定只能邂逅 无法遭遇
展开
-
c++ 设计模式(三)singleton 单例模式
单例模式的意图:保证一个类只有一个实例,并提供一个访问它的全局节点使用性: 当类只能一个实例而且客户可以从从一个周所周知的访问点访问它 当这个唯一的实例应该是通过子类化可扩张的,并且客户应该无需修改代码就能使用一个扩展的实例记住上面这段话,在下面的分析过程我们反复来品味这段话的所表达的意思,融会贯通。一、什么是单例模式原创 2015-09-07 22:41:47 · 9957 阅读 · 3 评论 -
c++设计模式----Decorator(装饰)
装饰模式:意图:动态地给一个对象添加一些额外的职责。就增加功能来说,Decorator 模式相比生成子类更为灵活。 适用性: 在不影响其他对象的情况下,以动态、透明的方式给单个对象添加职责。 处理那些可以撤消的职责。 当不能采用生成子类的方法进行扩充时。一种情况是,可能有大量独立的扩展,为支原创 2015-09-17 23:12:45 · 2135 阅读 · 0 评论 -
c++设计模式-----Facade外观模式
Facade外观模式: 外观模式很简单,如果有一个系统,有许许多多的子系统的组成。而这这些系统在组成一个完整的系统的时候存在一定的关系,先使用哪个子系统,后使用哪个子系统,这是一个简单的组合关系,如果子系统之间存在更为复杂的关系,而各户又不知道怎么这种关系怎么办,好办,我们提供一个统一的接口,按照这个关系组成一个客户想要的系统,客户只需知道这个外观模式下的接口就行了,他们没必要原创 2015-09-19 21:10:57 · 1185 阅读 · 0 评论 -
c++设计模式-----访问者模式visitor
访问者模式例子: 我们去银行柜台办业务,一般情况下会开几个个人业务柜台的,你去其中任何一个柜台办理都是可以的。我们的访问者模式可以很好付诸在这个场景中:对于银行柜台来说,他们是不用变化的,就是说今天和明天提供个人业务的柜台是不需要有变化的。而我们作为访问者,今天来银行可能是取消费流水,明天来银行可能是去办理手机银行业务,这些是我们访问者的操作,一直是在变化的。原创 2015-10-08 22:00:01 · 790 阅读 · 0 评论 -
c++设计模式----Flyweight(享元)
享元模式:各大博客上有一个很好的例子,围棋,我们要设计一个围棋的游戏,围棋有黑白两种颜色,我们想一想,玩家在玩游戏的时候,有那么多的棋子,玩家每落下一个棋子的时候,我们真的要重新new的一个棋子吗,这得浪费多少内存空间,姑且不说同时在线玩围棋的人那么多。我想没有哪一家游戏公司会傻到提供这种服务器来设计这样一款游戏,那得要多少资本啊。 别急,c++设计模式中的享元模式就是为了解原创 2015-09-20 20:45:15 · 948 阅读 · 0 评论 -
(转载非原创)IT架构师基本技能
架构师(Architecture)是目前很多软件企业最急需的人才,也是一个软件企业中薪水最高的技术人才。换句话说,架构师是企业的人力资本,与人力资源相比其能够通过架构、创新使企业获得新的产品、新的市场和新的技术体系。那么什么是架构师、架构师的作用、如何定位一个架构师和如何成为一个架构师呢?这是许多企业、许多程序员朋友希望知道的或希望参与讨论的话题内容。所谓架构师通俗的说就是设计师、画图员、原创 2015-03-12 10:47:34 · 1021 阅读 · 0 评论 -
c++设计模式-----代理模式proxy
代理模式: 意图:为其他对象提供一种代理以控制对这个对象的访问。适用性:在需要用比较通用和复杂的对象指针代替简单的指针的时候,使用Proxy模式。下面是一 些可以使用Proxy 模式常见情况: 1) 远程代理(Remote Proxy )为一个对象在不同的地址空原创 2015-09-21 23:06:12 · 731 阅读 · 0 评论 -
c++设计模式----解释器模式interpreter
解析器: 意图:给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。适用性:当有一个语言需要解释执行, 并且你可将该语言中的句子表示为一个抽象语法树时,可使用解释器模式。而当存在以下情况时该模式效果最好:该文法简单对于复杂的文法, 文法的类层次变得庞大而无法管理。此时语法分析程序生成器这样的工具是更好的选择。它们无需构建抽象语原创 2015-09-23 19:32:08 · 866 阅读 · 0 评论 -
c++设计模式-----责任链模式
责任链模式: 什么是责任链模式呢?很简单啊,一个员工要加薪,他的经理处理不了,就交给部门主管处理,主管处理不了就交给总监处理,总监处理不了就交给boss处理。这就形成了一条责任链。设计模式中的责任链链的定义: 意图: 使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一原创 2015-09-24 01:26:53 · 1379 阅读 · 0 评论 -
c++设计模式----模板方法template method
模板方法: 模板方法很好理解,说白了就是一个模板,往这个模板中添加内容就可以了,比如了公司给每个应聘的人都发了一个简历模板,大家只需要在简历模板中按照条目填写自己的资料就可以了,大家所以填写的条目一样,而内容是根据自己的情况填写的,这就是模板。 在设计模式中,模板方法的意图是这样的:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。TemplateMe原创 2015-09-23 23:43:46 · 979 阅读 · 0 评论 -
设计模式c++(二)----Biluder建造者模式
建造者模式:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。举个经典的例子:建造小人。建造一个小人,要分为六步:头部、身体、左手、右手、左脚和右脚。与抽象工厂模式不同的是,建造者模式是在Director的控制下一步一步的构造出来的,在建造的过程中,建造者模式可以进行更精细的控制。不管人的头部、身体、左手、右手、左脚或者右脚如何变化,但是最终还是由这几部分组合在原创 2015-09-05 01:54:53 · 1057 阅读 · 0 评论 -
c++设计模式----组合模式(Composite)
什么是组合模式呢? DP书上给出的定义:将对象组合成树形结构以表示“部分-整体”的层次结构。组合使得用户对单个对象和组合对象的使用具有一致性。注意两个字“树形”。这种树形结构在现实生活中随处可见,比如一个集团公司,它有一个母公司,下设很多家子公司。不管是母公司还是子公司,都有各自直属的财务部、人力资源部、销售部等。对于母公司来说,原创 2015-09-16 21:18:16 · 1454 阅读 · 1 评论 -
c++策略模式strategy
意图: 定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化。适用性: 许多相关的类仅仅是行为有异。“策略”提供了一种用多个行为中的一个行为来配置一个类的方法。 需要使用一个算法的不同变体。例如,你可能会定义一些反映不同的空间/时间权衡的算法。 算法使用客户不应该知道的数据。可使用策略原创 2015-09-29 21:52:17 · 815 阅读 · 0 评论 -
C++ 设计模式(四)----原型模式
什么是原型模式? 先来看个例子:每年的校园招聘的时候,许多好公司来学校招应届生,大家就要去投简历,我相信大家都是聪明人,先写好一份原始简历,拿去复印n多份,然后去参加宣讲会投简历,投完简历后,第二天发现要简历写牛B点,就去修改原始简历,然后再去打印n多份就可以了。其中原始简历就是原型模式中的原型。 那么原型的模式意图呼之欲出:用原型实例指定创建对象的种类原创 2015-09-10 00:11:29 · 2051 阅读 · 0 评论 -
c++设计模式----迭代器模式iterator
迭代器: 意图: 提供一种方法顺序访问一个聚合对象中各个元素, 而又不需暴露该对象的内部表示。 适用性: 访问一个聚合对象的内容而无需暴露它的内部表示。 支持对聚合对象的多种遍历。 为遍历不同的聚合结构提供一个统一的接口(即, 支持多态迭代)。原创 2015-09-26 01:31:02 · 1558 阅读 · 1 评论 -
c++设计模式-----中介者模式Mediator
本文先以抽象的方式来实现中介者模式,然后用房子的例子来实例化抽象模式的实现。 以租房为例子,如果没有房屋中介,那么房客要自己找房东,而房东也要自己找房客,非常不方便。有了房屋中介机构就方便了,房东可以把要出租的房屋信息放到中介机构,而房客可以去中介机构咨询。在软件中,就是多个对象之间需要通信,如果没有中介,对象就需要知道其他对象,最坏情况下,可能需要知道所有其他对象,而有了中原创 2015-09-26 21:02:10 · 817 阅读 · 0 评论 -
c++设计模式-----命令模式
命令模式: 命令模式很简单,简单的点理解就是客户下发命令,然后有专门接受命令的人,接受命令的人真正的派人去执行每一条命令, 举个例子:我们去餐厅吃饭要点菜,菜单上许许多多的菜单条目,有炒青菜、西红柿炒鸡蛋、回锅肉、鱼香茄子等等这就是命令对象,我们点好菜给服务员,然后服务员让炒菜的师傅去执行这些炒菜的命令,这就是命令模式。原创 2015-09-24 22:32:12 · 894 阅读 · 0 评论 -
c++设计模式(五)Adapter class/object 适配器
在c++中什么是适配器呢? 先来看个例子:对于笔记本电脑,每台都有一个适配器,这个适配器干什么呢?就是给笔记本提供合适的电压,因为不同的国家民用电压标准不同,美国是110,中国是220v那么,某天老板让你去美国出差,如果你笔记本没适配器的话,到美国你的笔记本就找不到合适供电设备。 那么在c++中适配器是干什么工作呢?在软件设计、开发过程中,适配器又是个原创 2015-09-12 01:45:14 · 4033 阅读 · 0 评论 -
c++设计模式-----备忘录模式Mmento
备忘录模式: 备忘录模式很简单啊,就是备份之前的状态。在之后恢复这个状态。再来看在设计模式中是怎么定义的:意图:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。适用性:必须保存一个对象在某一个时刻的(部分)状态, 这样以后需要时它才能恢复到先前的状态。如果一个用接口来让其它对象直接得到这原创 2015-09-27 20:02:58 · 698 阅读 · 0 评论 -
c++设计模式-----observer(观察者模式)
意图: 定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时, 所有依赖于它的对象都得到通知并被自动更新。适用性: 当一个抽象模型有两个方面, 其中一个方面依赖于另一方面。将这二者封装在独立的对象中以使它们可以各自独立地改变和复用。 当对一个对象的改变需要同时改变其它对象, 而不知道具体有多少对象有待改变。 当一个原创 2015-09-28 00:42:37 · 963 阅读 · 0 评论 -
c++设计模式---- Bridge(桥接模式)
什么是桥接模式: 在GOF的《设计模式:可复用面向对象软件的基础》一书中对桥接模式是这样说的:将抽象部分和它的实现部分分离,使它们都可以独立的变化。简单粗暴的说,就是抽象对外提供调用的接口;对外隐瞒实现部分,在抽象中引用实现部分,从而实现抽象对实现部分的调用,而抽象中引用的实现部分可以在今后的开发过程中,切换成别的实现部分。来看一个例子: 有一台电脑需要原创 2015-09-13 22:13:24 · 2192 阅读 · 0 评论 -
c++设计模式----状态模式state
意图:允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。适用性:一个对象的行为取决于它的状态, 并且它必须在运行时刻根据状态改变它的行为。一个操作中含有庞大的多分支的条件语句,且这些分支依赖于该对象的状态。这个状态通常用一个或多个枚举常量表示。通常, 有多个操作包含这一相同的条件结构。State模式将每一个条件分支放入一个独立的类中。这使得你可以根据对象自身的原创 2015-09-28 22:10:01 · 727 阅读 · 1 评论 -
设计模式c++(一)----工厂模式
一、简单工厂模式 简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。实现方式 简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类(这些产品类继承自一原创 2015-09-04 09:46:03 · 919 阅读 · 0 评论 -
go flag的使用
package mainimport "flag"import "fmt"import "strconv"type percentage float32func (p *percentage) Set(s string) error { v, err := strconv.ParseFloat(s, 32) *p = percentage(v) return err}fu转载 2017-06-27 18:31:59 · 1174 阅读 · 0 评论