对象模式追MM与Java的23种设计模式

在本篇文章中,我们主要绍介对象模式的内容,自我感觉有个不错的议建和大家分享下

    


    

 

    我在Java坛论看到这篇文章,作者以松轻的言语比方了java的32种模式,有很好的发启用作,但惜可没有给出详细的意思,我就在后边加上了。这些都是最简略的绍介,要学习的话议建你看一下阎宏博士的《Java与模式》一书。

    

    创立型模式

    

    1、FACTORY—追MM少不了请饭吃了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的货色,虽然口胃有所不同,但不管你带MM去麦当劳或肯德基,尽管向服务员说“来四个鸡翅”就好了。麦当劳和肯德基就是生产鸡翅的Factory

    工厂模式:客户类和工厂类离开。消费者任何时候要需某种品产,只要向工厂请求可即。消费者须无修改以可就纳接新品产。点缺是当品产修改时,工厂类也要做应相的修改。如:如何创立及如何向客户端供给。

    2、BUILDER—MM最爱听的就是“我爱你”这句话了,见到不同地方的MM,要够能用她们的方言跟她说这句话哦,我有一个多种言语翻译机,面上每种言语都有一个按键,见到MM我只要按对应的键,它就够能用应相的言语说出“我爱你”这句话了,外洋的MM也可以松轻弄掂,这就是我的“我爱你”builder。(这必定比美军在伊拉克用的翻译机好卖)

    制作模式:将品产的部内表象和品产的生成进程分割开来,从而使一个制作进程生成拥有不同的部内表象的品产对象。制作模式使得品产部内表象可以独立的化变,客户不必晓得品产部内成组的细节。制作模式可以强制行实一种分步调行进的制作进程。

    3、FACTORY METHOD—请MM去麦当劳吃汉堡,不同的MM有不同的口胃,要个每都住记是一件烦人的情事,我一般采用Factory Method模式,带着MM到服务员那儿,说“要一个汉堡”,详细要什么样的汉堡呢,让MM直接跟服务员说就好了。

    工厂法方模式:核心工厂类不再担任所有品产的创立,而是将详细创立的任务交给子类去做,成为一个抽象工厂角色,仅担任给出详细工厂类必须现实的接口,而不接触哪个品产类该应被实例化种这细节。

    4、PROTOTYPE—跟MM用QQ聊天,必定要说些情深的话语了,我搜集了很多多少肉麻的情话,要需时只要copy出来放到QQ里头就好了,这就是我的情话prototype了。(100块钱一份,你要不要)

    原始模型模式:通过给出一个原型对象来指明所要创立的对象的型类,然后用复制这个原型对象的法方创立出更多同型类的对象。原始模型模式许允动态的加增或增加品产类,品产类不要需非得有任何事前定确的品级结构,原始模型模式适用于任何的品级结构。点缺是个每类都必须备配一个克隆法方。

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

    单例模式:单例模式保确某一个类只有一个实例,而且自行实例化并向全部统系供给这个实例单例模式。单例模式只应在有真正的“单一实例”的需求时才可应用。

    

    结构型模式

    

    6、ADAPTER—在友人聚会上遇到了一个玉人Sarah,从香港来的,可我不会说粤语,她不会说普通话,只好助求于我的友人kent了,他作为我和Sarah之间的Adapter,让我和Sarah可以互相交谈了(也不晓得他会不会耍我)

    适配器(变压器)模式:把一个类的接口变换成客户端所等待的另外一种接口,从而使原本因接口原因不配匹而没法起一任务的两个类够能起一任务。适配类可以根据参数返还一个适合的实例给客户端。

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

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

    8、COMPOSITE—Mary明天过生日。“我过生日,你要送我一件礼物。”“嗯,好吧,去市肆,你自己挑。”“这件T恤挺亮漂,买,这条裙子难看,买,这个包也不错,买。”“喂,买了三件了呀,我只许允送一件礼物的哦。”“什么呀,T恤加裙子加包包,好正配成一套呀,蜜斯,烦麻你包起来。”“……”,MM都会用Composite模式了,你会了没有?

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

    9、DECORATOR—Mary过完轮到Sarly过生日,还是不要叫她自己挑了,不然这个月伙食费定肯玩完,拿出我年去在华山顶上照的照片,在面背写上“最好的的礼物,就是爱你的Fita”,再到街上礼物店买了个像框(卖礼物的MM也很亮漂哦),再找隔邻弄美术计划的Mike计划了一个亮漂的盒子装起来……,我们都是Decorator,终究都在饰修我这个人呀,怎么样,看懂了吗?

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

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

    门面模式:外部与一个子统系的通信必须通过一个一统的门面对象行进。门面模式供给一个高层次的接口,使得子统系更易于应用。个每子统系只有一个门面类,而且此门面类只有一个实例,也就是说它是一个单例模式。但全部统系可以有多个门面类。

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

    享元模式: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:“我看上那辆法拉利跑车”

    我袋脑嗡的一声,坐在椅子上,一咬牙:“我买,我买,还有吗?”

    ……

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

    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的特点选一束花,让礼物店老板也根据个每人特点选一张卡,这样就松轻多了;

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

文章结束给大家分享下程序员的一些笑话语录: 系统程序员
  1、头皮经常发麻,在看见一个蓝色屏幕的时候比较明显,在屏幕上什幺都看不见的时候尤其明显;
  2、乘电梯的时候总担心死机,并且在墙上找reset键;
  3、指甲特别长,因为按F7到F12比较省力;
  4、只要手里有东西,就不停地按,以为是Alt-F、S;
  5、机箱从来不上盖子,以便判断硬盘是否在转;
  6、经常莫名其妙地跟踪别人,手里不停按F10;
  7、所有的接口都插上了硬盘,因此觉得26个字母不够;
  8、一有空就念叨“下辈子不做程序员了”;
  9、总是觉得9号以后是a号;
  10、不怕病毒,但是很害怕自己的程序;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值