![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
文章平均质量分 76
饭来张
多年导航软件的开发经验。对导航模块中,routing,guidance,search都有深入的研究。对数据的二进制格式设计有多年的设计经验。深入理解GDF格式。对数据编译流程设计也有多年经验。总之,
展开
-
设计模式3
strategy模式 这个模式和bridge模式很类似。我说的类似是具体实现上的类似,都是把算法组合为类的成员,但是背后考虑问题的思路确不同。所以看很多介绍书籍上举出的例子,你会觉得都可以来说明这2种模式,还是再强调,它们背后的思路完全不同。 具体而言,bridge模式中,把模块分为抽象部分和实现部分,这2部分都可能会发生变化,把他们抽象出来后,可以把M*N种变化变成M+N种变化。原创 2013-07-15 09:52:37 · 429 阅读 · 0 评论 -
设计模式5
Decorator模式 我觉得这个模式有点绕。需要很仔细的来分清其中的继承关系。 Decorator模式的使用场景:当你要描述一个东西,比如说“人”这个东西,你回构建一个人的class,它包括很多人的属性,比如身高,体重,性别,年龄等等,你还有很多的施加于“人”上面的方法,比如吃饭,睡觉,跑步等等。但是,你可能希望给“人”添加一些额外的东西,就像游戏中的人物一样,他是带装备,比如“黄金盔甲”,原创 2013-07-15 09:53:52 · 549 阅读 · 0 评论 -
设计模式2
Bridge模式 四人帮的说法“将抽象部分和它的实现部分分离,使他们可以独立地变化” 理解起来就是,有个模块A,能够把它分割成2个独立的概念,一个是它的抽象部分,一个是它的具体实现部分,这2个部分可以独立的改变。就是说如果有了新的实现算法,抽象部分可以不用感知到这种变化,这也是抽象部分就不需要改变;反过来,抽象部分有了变化,对于实现部分也不用去关心这种变化,从而实现部分也不需要变化。 具体例原创 2013-07-15 09:51:39 · 490 阅读 · 0 评论 -
设计模式1
Facade模式 当你需要使用一个很复杂的系统,你作为一个使用者,当然希望使用起来越简单越好,最好是一个概念上的功能只需要调用一个函数接口。这时候向你提供系统的人就要考虑使用facade模式了。通过这种模式改进后,系统提供者把系统的对外使用的复杂度降低了,使用者就可以很简单的使用系统了。举例来说,在导航软件中,路径规划功能是一个比较复杂的调用过程: 1,设置起点 2,设置终点 3,设置规划原创 2013-07-15 09:50:33 · 523 阅读 · 0 评论 -
设计模式6
Template Method模式 我们讲的前面很多模式的思路都是使用组合,而不用继承。并且也提到了一个设计原则“优先使用组合”。但是这个模式就是一个使用继承来解决问题的思路。毕竟,继承也不是一无是处。 在有些系统中,一个事务的完成需要通过一系列的步骤,就是第一步干什么,第二步干什么。这个步骤的序列是固定的(就是行业标准流程),并且在将来也不会改变,也没必要改变。但是每一步的具体实现对不同平台原创 2013-07-15 09:54:33 · 500 阅读 · 0 评论 -
设计模式4
Observer模式 这个模式理解起来应该算很简单。定义了一种1对多的关系。当其中“1”描述的对象变化时,“多”描述的多个对象都能得到通知并且被自动更新。 我们把“1”称为subject,“多”称为observer。如何让他们之间发生关系。使用组合。 在subject中,我们拥有一个observer引用的列表,和3个成员函数, addObserver( observer* ), 添加一原创 2013-07-15 09:53:31 · 485 阅读 · 0 评论 -
设计模式--Prototype(原型)
Prototype为一种创建型的设计模式。它定义了如何取创建对象。它在实现的时候,代码和factory区别不大。个人认为,所有的代码实现都查不多,就是继承和组合。 通过一个具体的例子可以导出为啥需要prototype的模式。只要不嫌麻烦,factory模式就可以完全满足所有的创建对象需求,但是针对特定的例子里面,factory显得太通用而效率不高。所以才有其他的创建型的模式出来。原创 2013-10-15 17:49:11 · 645 阅读 · 0 评论 -
准备写些clucene笔记
最近在看clucene的源码(不太会java,还是看c++的代码入门比较快。并且c++版本要简单些)。打算写点笔记记录下。 clucene最新的版本是2.3版本,我开始从这个版本看,代码优点多,不太好投入进去。先找了个0.8版本的clucene,这个版本果然简单多了,同时bug也比较多。这也是一个读源码的一个经验。从最早的一个版本来入门,速度上会快很多。 用vs2原创 2014-02-08 15:51:23 · 737 阅读 · 0 评论