LCL_data的博客专栏

业精于勤而荒于嬉,行成于思而毁于随。

我所理解的设计模式(C++实现)—— “一句话总结”和索引

我所理解的设计模式系列已经全部完成,在写该系列的过程中收获很多。俗话说得好,好记性不如烂笔头,写出来不单单可以增加自己对知识的理解,也可以很好的分享给大家,大家共同学习。这里是最后一篇,来给所有的设计模式来个一句话总结,在让我们“过电影”般在过一遍。

2013-09-28 07:22:46

阅读数:11108

评论数:15

最佳实践:C#项目转C++项目

最近在把一个C#项目转到C++项目,下面整理下C#和C++不同的地方,给各位个参考,避免入坑: 1)默认对象赋值方式不同,所以修改时要多加注意。具体参考 https://bbs.csdn.net/topics/392440547 2)类的变量默认值不同 .net默认是类型的默认值,C++没有默...

2018-12-25 14:53:59

阅读数:85

评论数:0

SQL Server中四类事务并发问题的实例再现

SQL Server中四类事务并发问题的实例再现 朱二(2006.3 转载请注明作者)   本篇文章将用实例再现数据库访问中四类并发问题,希望能让初学者能对事务的并行性有进一步的理解。   首先,让我们先来了解一下并行问题以及事务隔离级别这两个概念。 在数据库中,假设如果没有锁定且多个用户同...

2014-11-30 14:00:56

阅读数:2348

评论数:1

我所理解的设计模式(C++实现)——访问者模式(Visitor Pattern)

我们去银行柜台办业务,一般情况下会开几个个人业务柜台的,你去其中任何一个柜台办理都是可以的。我们的访问者模式可以很好付诸在这个场景中:对于银行柜台来说,他们是不用变化的,就是说今天和明天提供个人业务的柜台是不需要有变化的。而我们作为访问者,今天来银行可能是取消费流水,明天来银行可能是去办理手机银行...

2013-09-12 16:07:39

阅读数:20155

评论数:15

我所理解的设计模式(C++实现)——策略模式(Strategy Pattern)

每个人都要“交个人所得税”,但是“在美国交个人所得税”和“在中国交个人所得税”就有不同的算税方法。 而策略模式就是对算法进行包装,是把使用算法的责任和算法本身分割开来,委派给不同的对象管理。策略模式通常把一个系列的算法包装到一系列的策略类里面,作为一个抽象策略类的子类。用一句话来说,就是:“准备一...

2013-08-24 10:59:44

阅读数:14007

评论数:5

我所理解的设计模式(C++实现)——状态模式(State Pattern)

看看我们平时用的开关,同样一个开关他有2种状态:开和关,当她处于不同的状态的时候她的行为是不一样的,比如当她是开着的时候,你按她一下,她就变成了关闭状态,她是关着的时候按她一下,她就变成了开着的状态。看上去就像是改变了它的类一样,其实我们开发者都知道,我们里面用到了if-else,但是当碰到更多状...

2013-08-24 07:44:20

阅读数:13111

评论数:1

我所理解的设计模式(C++实现)——备忘录模式(Memento Pattern)

我们玩单机游戏的时候总会遇到老婆大人的各位事情,一会去买瓶醋了,一会去打个酱油了,会耽误我们玩游戏的进程,但是此时我们能有“保存游戏”这个宝贝,我们的主基地不会在我们打酱油的时候被对手拆掉。 这“保存游戏”的功能其实就是备忘录模式的很好应用,她是在在不破坏封装的前提下,捕获一个对象的内部状...

2013-08-04 10:23:13

阅读数:6707

评论数:2

我所理解的设计模式(C++实现)——中介者模式(Mediator Pattern)

假设我们开发一个图片处理软件,里面肯定包括很多相关功能,比如说剪切,旋转,滤镜,美化等等,而我们这些功能所要处理的对象是固定的,就是我们所显示的那张图片。但是我们不能把所有的功能罗列到一个tab上,虽然这样处理方便但是不美观。这是我们可以这样子:用一个中介者类负责所有功能的初始化和具体执行,我们需...

2013-07-27 14:15:22

阅读数:7175

评论数:3

我所理解的设计模式(C++实现)——迭代器模式(Iterator Pattern)

关于迭代器模式,在C++下可以参看 STL iterators 的实现;在.NET下实现Iterator模式,对于聚集接口和迭代器接口已经存在了,其中IEnumerator扮演的就是迭代器的角色,而IEnumerable则扮演的就是抽象聚集的角色,她只有一个GetEnumerator()方法,如果...

2013-07-12 13:19:56

阅读数:16109

评论数:4

我所理解的设计模式(C++实现)——解释器模式(Interpreter Pattern)

未来机器智能化已然成为趋势,现在手机都能听懂英语和普通话,那我大中华几万种方言的被智能化也许也是趋势,我们的方言虽然和普通话相似,但是还是不一样的。这可能需要一个新的语法分析器来帮助我们。 我们的解释器模式就是描述了如何为简单的语言定义一个文法,如何在该语言中表示一个句子,以及如何解释这些句子。 ...

2013-07-06 19:43:00

阅读数:9012

评论数:0

我所理解的设计模式(C++实现)——观察者模式(Observer Pattern)

概述:         最近中国股市起起伏伏,当然了起伏就用商机,小明发现商机后果断想入市,买入了中国证券,他想在电脑客户端上,网页上,手机上,iPad上都可以查看到该证券的实时行情,这种情况下我们应该怎么设计我们的软件呢?我们可以这样:小明的所有客户端上都订阅中国证券这个股票,只要股票一有变化...

2013-06-30 18:19:43

阅读数:31520

评论数:25

我所理解的设计模式(C++实现)——模板方法模式(Template Method Pattern)

概述:      我们最近在开发一个支持多种压缩类型文件的解压缩且制作成pdf的一个应用。对我们的架构来说我们需要支持多种压缩文件类型,但却有固定的操作顺序(先解压缩,在读取里面的文件分析、制作pdf)。我们抽取他们的共同点:这些操作的固定顺序,把他放到我们的父类里;他们的变化点:这些个具体的操...

2013-06-28 21:54:34

阅读数:7772

评论数:3

我所理解的设计模式(C++实现)——命令模式(Command Pattern)

概述:         我们去餐厅吃饭,我们是通过服务员来点菜,具体是谁来做这些菜和他们什么时候完成的这些菜,其实我们都不知道。抽象之,“菜单请求者”我们和“菜单实现者”厨师,2者之间是松耦合的,我们对这些菜的其他一些请求比如“撤销,重做”等,我们也不知道是谁在做。其实这就是本文要说的Comman...

2013-06-12 21:45:38

阅读数:17835

评论数:14

我所理解的设计模式(C++实现)——责任链模式(Chain Of Responsibility Pattern)

概述:      辛辛苦苦了工作了一年,终于可以加薪了,向主管提交了加薪申请,主管一看不得了,自己职权不够,批不了,主管把申请上交总监,总监发现自己也批不了,申请到了总经理手中,总经理一看,小伙子口气不小了,有胆识敢申请,先来谈下心。预知后事如何,请看下回分解。      这就是典型的职责链模...

2013-06-06 21:54:25

阅读数:7847

评论数:7

我所理解的设计模式(C++实现)——代理模式(Proxy Pattern)

概述 作为C++工程师,免不了要管理内存,内存管理也是C++中的难点,而智能指针采用引用计数的办法很方便的帮我们管理了内存的使用,极大方便了我们的工作效率。而智能指针的这种用法其实就是代理模式的一种,他帮我们控制了该对象的内存使用。 代理模式就是为其他对象提供一种代理来控制对这个对象的访问...

2013-05-29 14:56:07

阅读数:10433

评论数:2

我所理解的设计模式(C++实现)——享元模式(Flyweight Pattern)

概述 想想我们编辑文档用的wps,文档里文字很多都是重复的,我们不可能为每一个出现的汉字都创建独立的空间,这样代价太大,最好的办法就是共享其中相同的部分,使得需要创建的对象降到最小,这个就是享元模式的核心,即运用共享技术有效地支持大量细粒度的对象。 享元对象能做到共享的关键是区分内蕴状态(...

2013-05-25 22:29:23

阅读数:8746

评论数:5

我所理解的设计模式(C++实现)——外观模式(Facade Pattern)

概述 想想我们小时候玩的四驱车,里面的构造很复杂,马达,舵机,电池组等等,而我们控制它却非常简单,只要打开电池开关,他就可以跑。我们其实不用知道它里面是如何工作,只要知道拨动开关它就可以工作就行了,这个开关其实就四驱车给我们的一个友好的组件,使得我们可以很方便的控制它。 外观模式其实定义了一个...

2013-04-23 21:10:57

阅读数:6868

评论数:2

我所理解的设计模式(C++实现)——装饰者模式(Decorator Pattern)

解决的问题: 我们在装饰新家的时候买了几幅抽象画,买回来之后发现有些加上色彩艳丽的边框更适合我们,而有的加上玻璃罩之后更能符合我们的使用。那我们来怎么解决这个问题呢?他需要动态的给别的对象增加额外的职责,这就是装饰者模式的目的。 我们可以通过继承的方式来给原对象增加新功能,但是装饰者模式采用组...

2013-04-21 11:14:12

阅读数:9649

评论数:3

我所理解的设计模式(C++实现)——组合模式(Composite Pattern)

解决的问题: 我们PC用到的文件系统,其实就是我们数据结构里的树形结构,我们处理树中的每个节点时,其实不用考虑他是叶子节点还是根节点,因为他们的成员函数都是一样的,这个就是组合模式的精髓。他模糊了简单元素和复杂元素的概念,客户程序可以向处理简单元素一样来处理复杂元素,从而使得客户程序与复杂元素的...

2013-04-16 21:14:04

阅读数:16704

评论数:6

我所理解的设计模式(C++实现)——适配器模式(Adapter Pattern)

解决的问题: 适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本接口不匹配而无法在一起工作的两个类能够在一起工作。比如说我的hp笔记本,美国产品,人家美国的电压是110V的,而我们中国的电压是220V,要在中国能使用,必须找个变压器转一下电压才可以。这个变压器就是个适配器。 ...

2013-04-09 21:53:35

阅读数:16666

评论数:7

提示
确定要删除当前文章?
取消 删除
关闭
关闭