随笔分类 -  design pattern

摘要:结构模式的作用是将已有的功能组合起来,在Bridge模式中,我们通常从抽象和实现开始,然后用Bridge模式将它们组合起来。在Decorator模式中,是希望用梗多附加的功能对原有的功能类进行装饰。他们的作用都是组合功能,所以是结构型的。 阅读全文
posted @ 2013-08-07 11:06 liyunyu1 阅读(143) 评论(0) 推荐(0)
摘要:概述: 在现在的电视机中,我们使用[后一个]和[前一个]按钮可以很方便的换台,当按下[后一个]按钮时,将切换到下一个预置的频道。想象一下在陌生的城市中的旅店中看电视。当改变频道时,重要的不是几频道,而是节目内容。如果对一个频道的节目不感兴趣,那么可以换下一个频道,而不需要知道它是几频道。 这个其实就是我们迭代器模式的精髓:提供一种方法顺序访问一个聚合对象中各个元素,而又不需暴露该对象的内部表示。类图和实例:迭代器模式由以下角色组成:1.迭代器角色(Iterator):迭代器角色负责定义访问和遍历元素的接口。2.具体迭代器角色(ConcreteIterator):具体迭代器角色要实现... 阅读全文
posted @ 2013-07-27 19:47 liyunyu1 阅读(379) 评论(0) 推荐(0)
摘要:概述: 假设我们开发一个图片处理软件,里面肯定包括很多相关功能,比如说剪切,旋转,滤镜,美化等等,而我们这些功能所要处理的对象是固定的,就是我们所显示的那张图片。但是我们不能把所有的功能罗列到一个tab上,虽然这样处理方便但是不美观。这是我们可以这样子:用一个中介者类负责所有功能的初始化和具体执行,我们需要功能时直接调用中介者类即可。 中介者模式就是定义一个中介对象来封装系列对象之间的交互。中介者使各个对象不需要显示地相互引用,从而使其耦合性松散,而且可以独立地改变他们之间的交互。类图和实例Mediator类:抽象中介者,定义了同事对象交互的接口。ConcreteMediator类:具体中.. 阅读全文
posted @ 2013-07-27 19:42 liyunyu1 阅读(301) 评论(0) 推荐(0)
摘要:一、初识中介者模式那些年,我们一起上过的大学,班级里有班长,有团书记。想一想如果没有QQ这种通讯工具的话,那么班长或者团支书该怎样下达消息呢??同时,班级上两个同学之间也可惜沟通啊,沟通一下,院里哪个女生,哪个帅哥呀~~~如果没有QQ的话,大概就是下面的情景:哎呀呀,看看这个乱那。如果同学的数目多起来就会变成网状的结构啦。原本把一个系统分割成一些对象是可以增强复用性的,但是现在的情况是,这些兑现之间存在着大量的联系,耦合性极高。这是很不利于复用的,同时这种情况使得系统的灵活性大大的降低,使得对系统的扩展很难,要是新转来一个学生的话,要改动的地方就多了去了。如果现在可以使用QQ,那么可以采用另一 阅读全文
posted @ 2013-04-14 21:42 liyunyu1 阅读(350) 评论(0) 推荐(0)
摘要:“唉!我没那种命啦,轮也不会轮到我,爱情老是缺货,我争什么?”一大清早就手机响,把我春天的梦都吵没了。“喂,谁啊,大清早的还要不要人睡觉啦?”“师傅,是我啦,小刘!”“是你呀,是不是看我给你发的装饰器模式代码有问题要问我啦?”“才不是啊,我可没那么笨,你的资料一看就懂了,有你这位大虾指导,我的设计模式之路无比光明!今天找你是有其它事情啦!”“别拍马屁了,有什么事情就快说吧!”“嗯,是这样的,为了答谢师傅的耐心指导,准备今天约师傅看电影,不知师傅肯赏脸否?”哇,这可是天上掉下来的美差啊,抑制住心中的喜悦,淡淡的说:“我得看看今天的行程,这样吧,一会我回电话给你吧!”“哦,这样啊,那好吧,等你电话 阅读全文
posted @ 2013-04-12 21:42 liyunyu1 阅读(266) 评论(0) 推荐(0)
摘要:Decorator模式一 意图 动态地给一个对象添加一些额外的职责。就增加功能来说,Decorator模式相比生成子类更为灵活。——包装器Wrapper。二 动机 有时我们希望给某个对象而不是整个类添加一些功能。例如,一个图形用户界面工具箱允许你对任意一个用户界面组件添加一些特性,例如边框,或是一些行为,例如窗口滚动。使用继承机制是添加功能的一种有效途径,从其他类继承过来的边框特性可以被多个子类的实例所使用。但这种方法不够灵活,因为边框的选择是静态的,用户不能控制对组件加边框的方式和时机。 一种较为灵活的方式是将组件嵌入另一个对象中,由这个对象添加边框。我们称这个嵌入的对象为装饰。这个装... 阅读全文
posted @ 2013-04-12 21:40 liyunyu1 阅读(323) 评论(0) 推荐(0)
摘要:老樊,你这次去山西出差得多久啊?”小刘在电话那头说。“呃……这回我过来手头上兼着三个项目,估计得有段时间啊!你不知道来山西这几天我有多累啊,写文档写到手都要抽筋了!”“那你可得注意休息啊,上次你给我说的那两个设计模式我已经很熟练了,你啥时候教我新的设计模式啊?”“这样吧,等我把手头上的这个需求分析写完,我就给你电话。”写文档时间过得很快,一转眼就到深夜了。酒店很安静,但是我的思绪却清晰不起来,用户需求中有一部分始终不能很好的理解,也许是想了一天,大脑零件也该断电休息休息了。躺在床上怎么也睡不着,老觉得有件事情还没做,仔细想想才记起今天答应给小刘讲设计模式了。发条短信过去试探试探看看她睡没,“小 阅读全文
posted @ 2013-04-12 20:57 liyunyu1 阅读(213) 评论(0) 推荐(0)
摘要:一、组合模式简介(Brief Introduction)组合模式,将对象组合成树形结构以表示“部分-整体”的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性。二、解决的问题(What To Solve)解决整合与部分可以被一致对待问题。三、组合模式分析(Analysis)1、组合模式结构Component类:组合中的对象声明接口,在适当情况下,实现所有类共有接口的行为。声明一个接口用于访问和管理Component的子部件Leaf类:叶节点对象,叶节点没有子节点。由于叶节点不能增加分支和树叶,所以叶节点的Add和Remove没有实际意义。有叶节点行为,用来存储叶节点集合Compos 阅读全文
posted @ 2013-04-12 19:42 liyunyu1 阅读(288) 评论(0) 推荐(0)
摘要:今天讲外观模式,这个模式其实理解起来超级简单,为什么呢?这个模式其实我觉得可以用四个字来形容它:化繁为简。因为这个模式就是用来提供简化接口的。什么是简化接口?其实就是将很多复杂的接口组合起来成为一个新接口。你或许会问,把许多复杂的接口组合起来不是会更复杂吗,怎么会变得简单,这不是自相矛盾吗?哈哈,那你就错了,其实外观模式更像一个东西:宏。又拿宏说事儿了,不是上次命令模式里面提到过“命令宏”的吗,这个模式和宏有什么关系呢?嘿嘿,如果把上次“命令宏”称为“狭义的宏”的话,那么外观模式就是“广义的宏”(似乎越来越难理解了……)。 别急,让我慢慢道来,先解决为什么叫“广义的宏”这个问题。首先,广义代表 阅读全文
posted @ 2013-04-12 11:07 liyunyu1 阅读(411) 评论(0) 推荐(0)
摘要:概述 (摘自百度百科)外观模式是软件工程中常用的一种软件设计模式。它为子系统中的一组接口提供一个统一的高层接口。这一接口使得子系统更加容易使用。结构Facade这个外观类为子系统中Packages 1、2、3提供一个共同的对外接口Clients客户对象通过一个外观接口读写子系统中各接口的数据资源。Packages客户可以通过外观接口读取的内部库示例Java这是一个抽象的示例。一个客户“you”通过外观接口“computer”获取计算机内部复杂的系统信息。/* Complex parts */class CPU {public void freeze() { ... }public voi... 阅读全文
posted @ 2013-04-12 11:02 liyunyu1 阅读(227) 评论(0) 推荐(0)
摘要:Java适配器模式(摘自百度文库)问题引出:大家生活中可能碰到的一个问题就是你新买的手机自带的耳机是2.5接口的,不幸的是有一天你的耳机坏了,你去市面上根本就找不到2.5的耳机了,基本上是3.5接口了,没办法你只好买了个3.5接口的耳机,老板告诉你:“我给你一个适配器”这不问题就解决了。问题分析:3.5的接口的耳机在你手机上本来是没法使用的,因为它没有按照2.5接口的设计啊,而现在我又想使用这幅耳机,于是乎有了“适配器(Adapter)”这个一个东西出来了。Adapter模式的定义:把一个类的接口变换成客户端所期待的另外一种接口,使得原本由于接口不兼容而不能再一起工作的那些类可以一起工作。适. 阅读全文
posted @ 2013-04-11 21:46 liyunyu1 阅读(215) 评论(0) 推荐(0)