转贴:23种设计模式的有趣见解

访问流年BLOG看到的一段文字,对设计模式的解趣,能够让人很快的了解其含,学到了不少西,以下是文章的内容:

对设计模式很有意思的诠释,呵呵,原作者不

建型模式 

1
FACTORY—MM少不了了,麦当翅和肯德基的翅都是MM吃的西,然口味有所不同,但不管你MM去麦当或肯德基,只管向服务员说来四个就行了。麦当和肯德基就是生产鸡翅的Factory 

工厂模式:客户类和工厂。消者任何候需要某种产品,只需向工厂求即可。消者无修改就可以接品。缺点是当品修改,工厂也要做相的修改。如:如何建及如何向客端提供。 

2
BUILDER—MM听的就是了,到不同地方的MM,要能用她的方言跟她说这哦,我有一个多种语言翻机,上面每种语言都有一个按MM我只要按对应,它就能用相了,国外的MM也可以松搞掂,就是我的”builder。(一定比美在伊拉克用的机好 

建造模式:将品的内部表象和品的生成程分割来,从而使一个建造程生成具有不同的内部表象的象。建造模式使得品内部表象可以独立的化,客不必知道品内部成的细节。建造模式可以行一步骤进行的建造程。 

3
FACTORY METHOD—MM去麦当堡,不同的MM有不同的口味,要个都住是一件人的事情,我一般采用Factory Method模式,MM到服务员那儿,要一个,具体要什么样堡呢,MM直接跟服务员说就行了。 

工厂方法模式:核心工厂不再负责所有品的建,而是将具体建的工作交去做,成一个抽象工厂角色,仅负责给出具体工厂须实现的接口,而不接触哪一个类应当被例化这种细节 

4
PROTOTYPE—MMQQ聊天,一定要些深情的话语了,我搜集了好多肉麻的情,需要只要copy出来放到QQ里面就行了,就是我的情prototype了。(100块钱一份,你要不要) 

原始模型模式:通过给出一个原型象来指明所要建的象的型,然后用个原型象的方法建出更多同型的象。原始模型模式允许动态的增加或减少不需要非得有任何事先确定的等级结构,原始模型模式适用于任何的等级结构。缺点是一个都必一个克隆方法。 

5
SINGLETON—俺有6个漂亮的老婆,她的老公都是我,我就是我家里的老公Sigleton,她只要老公,都是指的同一个人,那就是我(才做了个梦啦,哪有这么好的事

例模式:例模式确保某一个只有一个例,而且自行例化并向整个系提供例模式。例模式只在有真正的的需求才可使用。 

构型模式 

6
ADAPTER—在朋友聚会上碰到了一个美女Sarah,从香港来的,可我不会,她不会普通,只好求助于我的朋友kent了,他作我和SarahAdapter我和Sarah可以相互交(也不知道他会不会耍我

适配器(变压器)模式:把一个的接口变换成客端所期待的另一接口,从而使原本因接口原因不匹配而无法一起工作的两个一起工作。适配可以根据参数返一个合适的端。 

7
BRIDGE—早上碰到MM,要早上好,上碰到MM,要说晚上好;碰到MM穿了件新衣服,要你的衣服好漂亮哦,碰到MM新做的型,要你的头发好漂亮哦。不要早上碰到MM新做了个型怎么说这种问题,自己用BRIDGE合一下不就行了 

梁模式:将抽象化与实现化脱耦,使得二者可以独立的化,也就是将他强关联变成弱关联,也就是指在一个件系的抽象化和实现化之使用/聚合系而不是系,从而使两者可以独立的化。 

8
COMPOSITE—Mary今天生日。生日,你要送我一件礼物。”“,好吧,去商店,你自己挑。”“T恤挺漂亮,条裙子好看,个包也不”“喂,了三件了呀,我只答送一件礼物的哦。”“呀,T恤加裙子加包包,正好配成一套呀,小姐,麻你包起来。”“……”MM都会用Composite模式了,你会了没有? 

合成模式:合成模式将组织树结构中,可以用来描述整体与部分的系。合成模式就是一个象的树结构的模式。合成模式把部分与整体的系用树结构表示出来。合成模式使得客端把一个个独的成分象和由他们复合而成的合成象同等看待。 

9
DECORATOR—MarySarly生日,是不要叫她自己挑了,不个月伙食肯定玩完,拿出我去年在上照的照片,在背面写上最好的的礼物,就是你的Fita”,再到街上礼品店了个像框(礼品的MM也很漂亮哦),再找隔壁搞美术设计Mike设计了一个漂亮的盒子装起来……,我都是Decorator,最都在修个人呀,怎么样,看懂了 

模式:装模式以端透明的方式象的功能,是系的一个替代方案,提供比承更多的灵活性。动态给一个象增加功能,些功能可以再动态的撤消。增加由一些基本功能的排列合而生的非常大量的功能。 

10
FACADE—我有一个专业Nikon相机,我就喜自己手动调光圈、快这样照出来的照片才专业,但MM可不懂些,教了半天也不会。幸好相机有Facade设计模式,把相机整到自档,只要准目按快就行了,一切由相机自动调整,这样MM也可以用个相机我拍照片了。 

面模式:外部与一个子系的通信必一个一的行。面模式提供一个高次的接口,使得子系更易于使用。一个子系只有一个,而且此只有一个例,也就是它是一个例模式。但整个系可以有多个 

11
FLYWEIGHT—天跟MM短信,手指都累死了,最近了个新手机,可以把一些常用的句子存在手机里,要用的候,直接拿出来,在前面加上MM的名字就可以送了,再不用一个字一个字敲了。共享的句子就是FlyweightMM的名字就是提取出来的外部特征,根据上下文情况使用。 

享元模式:FLYWEIGHT在拳中指最。享元模式以共享的方式高效的支持大量的粒度象。享元模式能做到共享的关键是区分内和外。内在享元内部,不会随境的改而有所不同。外是随境的改而改的。外不能影响内,它是相互独立的。将可以共享的状和不可以共享的状从常规类中区分来,将不可以共享的状里剔除出去。客端不可以直接建被共享的象,而当使用一个工厂负责创建被共享的象。享元模式大幅度的降低内存中象的数量。 

12
PROXY—MM在网上聊天,一开头总“hi,你好”,“你从哪儿来呀?”“你多大了?”“身高多少呀?,真人,写个程序做我的Proxy吧,凡是接收到置好了自的回答,接收到其他的话时再通知我回答,怎么样,酷吧。 

代理模式:代理模式某一个象提供一个代理象,并由代理象控制象的引用。代理就是一个人或一个机构代表另一个人或者一个机构采取行。某些情况下,客不想或者不能直接引用一个象,代理象可以在客和目标对象直接起到中介的作用。客端分辨不出代理主题对象与真题对象。代理模式可以并不知道真正的被代理象,而仅仅持有一个被代理象的接口,这时候代理象不能够创建被代理象,被代理象必有系的其他角色代为创建并入。 

模式 

13
CHAIN OF RESPONSIBLEITY—上去上英语课了好溜坐到了最后一排,哇,前面坐了好几个漂亮的MM哎,找张纸条,写上“Hi,可以做我的女朋友?如果不愿意向前条就一个接一个的上去了,糟糕,到第一排的MM传给了,听是个老女呀,快跑

模式:在模式中,很多象由一个其下家的引用而接 

起来形成一条求在传递,直到上的某一个象决定理此求。客并不知道上的哪一个象最终处求,系可以在不影响客端的情况下动态的重新组织链和分配任。理者有两个选择:承担任或者把任推下家。一个求可以最不被任何接收端象所接受。 

14
COMMAND—俺有一个MM家里管得特别严,没法面,只好借助于她弟弟在我们俩间传送信息,她我有什指示,就写一张纸她弟弟带给我。不,她弟弟又来一个COMMAND了感他,我他吃了碗杂酱面,哪知道他我同时给我姐姐三个男朋友送COMMAND,就数你最小气,才我吃面。:-( 

命令模式:命令模式把一个求或者操作封装到一个象中。命令模式把出命令的任和行命令的任分割,委派不同的象。命令模式允许请求的一方和送的一方独立来,使得求的一方不必知道接收求的一方的接口,更不必知道求是怎被接收,以及操作是否行,何行以及是怎行的。系支持命令的撤消。 

15
INTERPRETER—俺有一个《泡MM》,上面有各MM的攻略,比如去吃西餐的步骤、去看影的方法等等,跟MM,只要做一个Interpreter,照着上面的脚本行就可以了。 

器模式:定一个言后,解器模式可以定出其文法的一表示,并同提供一个解器。客端可以使用个解器来解释这言中的句子。解器模式将描述怎在有了一个简单的文法后,使用模式设计释这句。在解器模式里面提到的言是指任何解象能的任何合。在解器模式中需要定一个代表文法的命令的等级结构,也就是一系列的规则一个命令象都有一个解方法,代表命令象的解。命令象的等级结构中的象的任何排列合都是一个言。 

16
ITERATOR—上了Mary,不一切的向她求婚。 

Mary
想要我跟你婚,得答我的条件” 
我:条件我都答,你” 

Mary
我看上了那个一克拉的” 
我:,我” 

Mary
我看上了湖的那栋别” 
我:,我” 

Mary
你的小弟弟必要有50cm” 
的一声,坐在椅子上,一咬牙:我剪,我剪,” 
…… 

迭代子模式:迭代子模式可以访问一个聚集中的元素而不必暴露聚集的内部表象。多个象聚在一起形成的体称之聚集,聚集象是能包容一组对象的容器象。迭代子模式将迭代逻辑封装到一个独立的子象中,从而与聚集本身隔。迭代子模式化了聚集的界面一个聚集象都可以有一个或一个以上的迭代子象,一个迭代子的迭代状可以是彼此独立的。迭代算法可以独立于聚集角色化。 

17
MEDIATOR—四个MM打麻将,相互之间谁应该给谁多少算不清楚了,幸我在旁,按照各自的筹码数算的从我里拿,的也付我,一切就OK啦,俺得到了四个MM电话 

停者模式:停者模式包装了一系列象相互作用的方式,使得象不必相互明作用。从而使他可以松散偶合。当某些象之的作用生改变时,不会立即影响其他的一些象之的作用。保证这些作用可以彼此独立的化。停者模式将多多的相互作用多的相互作用。停者模式将象的行作抽象化,把象在小尺度的行上与其他象的相互作用分开处理。 

18
MEMENTO—跟几个MM聊天,一定要清楚才跟MM了些什么话,不然MM发现了会不高的哦,幸我有个才与哪个MM了什么话我都拷一份放到里面保存,这样可以随察看以前的记录啦。 

模式:录对象是一个用来存另外一个象内部状的快照的象。模式的用意是在不破坏封装的条件下,将一象的状捉住,并外部化,存起来,从而可以在将来合适的候把原到存起来的状 

19
OBSERVER—想知道咱公司最新MM报吗?加入公司的MM报邮就行了,tom负责搜集情,他发现的新情不用一个一个通知我,直接给邮,我为订阅者(察者)就可以及收到情 

察者模式:察者模式定了一多的依赖关系,多个察者象同时监听某一个主题对象。个主题对象在状,会通知所有察者象,使他更新自己。 

20
STATE—MM交往,一定要注意她的状哦,在不同的状态时她的行会有不同,比如你她今天上去看影,你没趣的MM就会有事情啦你不讨厌没喜上的MM就会好啊,不可以上我同事,已上你的MM就会几点?看完影再去泡吧怎么样,当然你看程中表良好的,也可以把MM的状从不讨厌不喜欢变成喜哦。 

模式:状模式允一个象在其内部状候改象看上去象是改了它的。状模式把所研究的象的行包装在不同的状态对象里,一个状态对象都属于一个抽象状态类的一个子。状模式的意一个象在其内部状候,其行也随之改。状模式需要对每一个系可能取得的状态创立一个状态类的子。当系的状态变,系便改的子 

21
STRATEGY—跟不同型的MM会,要用不同的策略,有的请电影比好,有的去吃小吃效果不,有的去海浪漫最合适,目的都是了得到MM的芳心,我的追MM囊中有好多Strategy哦。 

策略模式:策略模式针对算法,将一个算法封装到具有共同接口的独立的中,从而使得它可以相互替策略模式使得算法可以在不影响到客端的情况下化。策略模式把行境分类负责维持和查询为类,各算法在具体的策略中提供。由于算法和境独立来,算法的增减,修改都不会影响到境和客端。 

22
TEMPLATE METHOD——《如何服女生上床》典文章?女生从认识到上床的不步骤巧遇、打破僵局、展追求、接吻、前手、爱抚去八大步骤(Template method),但步骤针对不同的情况,都有不一的做法,就要看你随机应变(具体实现) 

模板方法模式:模板方法模式准一个抽象,将部分逻辑以具体方法以及具体构造子的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子可以以不同的方式实现这些抽象方法,从而剩余的逻辑有不同的实现。先制定一个顶级逻辑框架,而将逻辑细节具体的子实现 

23
VISITOR—情人到了,要给每MM送一束花和一卡片,可是MM送的花都要针对她个人的特点,每张卡片也要根据个人的特点来挑,我一个人哪搞得清楚,是找花店老板和礼品店老板做一下Visitor花店老板根据MM的特点一束花礼品店老板也根据个人特点卡,这样松多了; 

访问者模式:访问者模式的目的是封装一些施加于某数据构元素之上的操作。一旦些操作需要修改的,接受个操作的数据构可以保持不访问者模式适用于数据构相未定的系,它把数据构和作用于构上的操作之的耦合解脱,使得操作集合可以相自由的演化。访问者模式使得增加新的操作的很容易,就是增加一个新的访问访问者模式将有的行集中到一个访问象中,而不是分散到一个个的中。当使用访问者模式,要将尽可能多的浏览逻辑放在访问中,而不是放到它的子中。访问者模式可以跨几个的等级结访问属于不同的等级结构的成员类

posted @ 2007-06-29 10:35  寒天飞雪  阅读(374)  评论(0编辑  收藏  举报