
设计模式
文章平均质量分 64
MyMichael
Michael
展开
-
代理模式--结构型模式之七
1. 意图 为其他对象提供一种代理以控制对这个对象的访问。2. 别名Surrogate3. 动机 对一个对象进行访问控制的一个原因是为了只有在我们确实需要这个对象时才对它进行创建和初始化。我们考虑一个可以在文档中嵌入图形对象的文档编辑器。有些图形对象(如大型光栅图像)的创建开销很大。但是打开文档必须很迅速,因此我们在打开文档时应避免一次性创建所有开销转载 2012-11-25 22:45:07 · 865 阅读 · 0 评论 -
不老呢做草药--建造者(Builder)模式
原创,转载请注明! 不老呢做草药,不论是做治痢疾的,还是治烧烫伤的,做草药的步骤是固定的,主要分这么几种:1 采药;2 烘干;3 研磨;4 混合;于是,他总结了一个抽象的做草药办法--草药生成器:abstract class 草药生成器 { virtual 采药(){} virtual 烘干(){} virtual原创 2012-11-18 12:09:51 · 1038 阅读 · 0 评论 -
徐劳颁做生意--抽象工厂模式
原创,转载请注明出处,谢谢!1 问题? 牛叻是江西一个县级市的小老板,非常精明,胆识过人,做过各种各样的生意,从贩冬瓜、压榨芝麻油、汽车修理,到从大兴安岭走私木材,开办加油站,打造庙宇旅游风景区应有尽有。牛叻需要生产各种各样的产品来满足人们的需要。种类繁多,细节异常繁杂,令人头疼,怎么办呢? 最简单直接的办法就是弄个作坊:亲自设计、生产五花八门东西。为此,牛叻需要知道每种产品的加工流程、制作细节。每次增加一种生意,牛叻就需要调整作坊的整套流程以便为新产品作准备。由于都是邻里乡亲的生意,每种产原创 2012-11-13 18:35:17 · 782 阅读 · 0 评论 -
MVC设计模式
(2012-05-07 22:01:43)http://blog.sina.com.cn/s/blog_4b4cf2af0100ywjy.html转载▼标签: mvc 设计模式 ios 杂谈分类: 科技博文MVC(Model View Controller)模型(mode转载 2015-02-10 17:33:39 · 955 阅读 · 0 评论 -
模版方法--行为型模式之二:类的关系
大家不要把它和C++的template class/method搞混了。后者是一种语法。1. 意图 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。 Te m p l a t e M e t h o d使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。2. 动机 考虑一个提供 A p p l i c a t i o n和D o c u转载 2012-12-19 00:31:36 · 731 阅读 · 0 评论 -
观察者模式--行为型模式之三
1. 意图定义对象间的一种一对多的依赖关系 ,当一个对象的状态发生改变时 , 所有依赖于它的对象都得到通知并被自动更新。2. 别名依赖(Dependents), 发布-订阅(Publish-Subscribe)3. 动机 将一个系统分割成一系列相互协作的类有一个常见的副作用:需要维护相关对象间的一致性。我们不希望为了维持一致性而使各类紧密耦合,因为这样降低了它们转载 2012-12-16 15:48:34 · 1147 阅读 · 0 评论 -
村民看病--行为型模式之一:策略模式
原创,转载请注明! 中国、江西、某村 不老呢是个这个村的农民,自幼聪明过人,除了种地之外,还爱看些医学著作,上山采些草药,偶尔也给村子里的村民做个推拿、配个草药,一来二往,渐渐在邻里乡亲中有了些名气,拿现在的话说,就是山寨医生,跟郎中差不多。 县里有个中医院,还有一个人民医院,西医。当然了,两家医院收费,那是相当的高!城里距离村子也有十来里地,原创 2012-11-17 22:35:55 · 831 阅读 · 0 评论 -
模板方法--行为型模式之四
1. 意图 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。 Te m p l a t e M e t h o d使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。2. 动机 考虑一个提供 A p p l i c a t i o n和D o c u m e n t类的应用框架。 A p p l i c a t i o n类负责打开一个已转载 2012-12-26 00:04:56 · 842 阅读 · 0 评论 -
不老呢看病的秘密--适配器模式,结构型模式之二
原创,转载请注明! 不老呢看过很多病,有不少看好了。有人就奇怪了,为何大医院要花费几百快的病,一个小小村民也能看好,这是为什么呢?以后还要不要去医院了?为了解开村民的疑惑,我们就来解开其中的奥秘,奥秘就在于。。。 草药是不老呢自己做的。所有草药的原料、加工流程他门儿清。我们用一个类的实现来表示:class 草药 { private: 原材料一;原创 2012-11-20 17:36:22 · 663 阅读 · 0 评论 -
装饰模式--结构型模式之三
1. 意图 动态地给一个对象添加一些额外的职责。就增加功能来说, D e c o r a t o r模式相比生成子类更为灵活。2. 别名包装器Wrapper3. 动机 有时我们希望给某个对象而不是整个类添加一些功能。例如,一个图形用户界面工具箱允许你对任意一个用户界面组件添加一些特性,例如边框,或是一些行为,例如窗口滚动。使用继承机制是添加功能的一转载 2012-11-21 23:29:42 · 630 阅读 · 0 评论 -
桥接(bridge) 模式--结构型模式之五
1. 意图 将抽象部分与它的实现部分分离,使它们都可以独立地变化。2. 别名Handle/Body3. 动机 当一个抽象可能有多个实现时,通常用继承来协调它们。抽象类定义对该抽象的接口,而具体的子类则用不同方式加以实现。但是此方法有时不够灵活。继承机制将抽象部分与它的实现部分固定在一起,使得难以对抽象部分和实现部分独立地进行修改、扩充和重用。转载 2012-11-22 22:38:22 · 1026 阅读 · 0 评论 -
单一职责原则?
原创,转载请注明出处,谢谢! 单一职责原则说的是一个函数、类、模块等等软件实体只负责一个事情。这是因为: 如果一个软件实体承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化会消弱此软件实体完成其它职责的能力。这就是耦合的恶果。其实何止是OO中的类!整个软件设计不也就是要把那些耦合的职责分离吗? 如何判断?原创 2012-11-15 21:01:32 · 926 阅读 · 0 评论 -
数据抽象和层次关系
原创,转载请注明出处,谢谢! 替换能力在面向对象编程里是一个原则。它指出在计算机程序里,如果S是T的子类,那么T的对象能够被S的对象替换,也就是说S的对象可以代替T的对象,不需要改变程序的任何属性--正确性等等. 更正式的说,里氏代换原则((LSP) 是一个子类关系定义, 被称为强类型的子类定义,是在1987年最初由Barbara Liskov在一次主题为数据抽象和层次关系翻译 2012-11-16 10:26:18 · 1384 阅读 · 0 评论 -
策略模式--我叫它算法模式
原创,转载请注明出处,谢谢!1 问题是什么? 爷爷 如果一个软件实体(类或者模块等)内部经常变化的是算法,比如传入、参数返回类型等等要经常变化,就像商场的里打折方法那样。算法的多样性大大影响使用算法的用户(收银员等)。2 如何解决?我们需要屏蔽变化。如何做?抽象一个算法类,各种各样的算法派生自它。为了不让使用原创 2012-11-16 16:48:14 · 726 阅读 · 0 评论 -
外观模式Facade--结构型模式之四
1. 意图 为子系统中的一组接口提供一个一致的界面, F a c a d e模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。2. 动机 将一个系统划分成为若干个子系统有利于降低系统的复杂性。一个常见的设计目标是使子系统间的通信和相互依赖关系达到最小。达到该目标的途径之一是就是引入一个 外观(facade)对象,它为子系统中较一般的设施提转载 2012-11-22 00:08:56 · 730 阅读 · 0 评论 -
组合模式(composite)--结构型模式之六
1. 意图 将对象组合成树形结构以表示“部分 -整体”的层次结构。 Composite使得用户对单个对象和组合对象的使用具有一致性。2. 动机 在绘图编辑器和图形捕捉系统这样的图形应用程序中,用户可以使用简单的组件创建复杂的图表。用户可以组合多个简单组件以形成一些较大的组件,这些组件又可以组合成更大的组件。一个简单的实现方法是为 Text和Line这样的转载 2012-11-22 23:22:56 · 1017 阅读 · 0 评论 -
把信送给加西亚--行为型模式之五:中介者模式的实例
原创,转载请注明出处,谢谢!1 故事 公司组织去奥林匹克公园team building,主题是“把信送给加西亚”。头天,组长组织大家秘密商讨,主题时如何夺取第二天的ipad2大奖的计划。由于人员众多,组长怕大家不认识,要求每个人用一句话形容自己,然后顺时针把剩下的所有人描述自己的话再重复出来,这样经过2轮,名字基本记住了,虽然免不了张冠李戴:比如GC同学异常肯定的把硬件部原创 2012-12-25 23:35:29 · 1303 阅读 · 0 评论