约爱资源
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、FA??ADE —我有一个专业的 Nikon 相机,我就喜欢自己手动调光圈、快门,这样照出来 、 的照片才专业,但 MM 可不懂这些,教了半天也不会。幸好相机有 Facade 设 计模式,把相 机调整到自动档,只要对准目标按快门就行了,一切由相机自动调整,这样 MM 也可以用 这个相机给我拍张照片了。 门面模式: 门面模式提供一个 门面模式 外部与一个子系统的通信必须通过一个统一的门面对象进行。 高层次的接口,使得子系统更易于使用。每一个子系统只有一个门面类,而且此门面类只有 一个实例,也就是说它是一个单例模式。但整个系统可以有多个门面类。 11、FLYWEIGHT —每天跟 MM 发短信,手指都累死了,最近买了个新手机,可以把一些常 、 用的句子存在手机里,要用的时候,直接拿出来,在前面加上 MM 的名字就可以发送了, 再 不用一个字一个字敲了。共享的句子就是 Flyweight,MM 的名字就是提取出来的外部特 征,根据上下文情况使用。 享元模式:FLYWEIGHT 在拳击比赛中指最轻量级。享元模式以共享的方式高效的支持大量 享元模式 的细粒度对象。 享元模式能做到共享的关键是区分内蕴状态和外蕴状态。 内蕴状态存储在享 元内 部,不会随环境的改变而有所不同。外蕴状态是随环境的改变而改变的。外蕴状态不 能影响内蕴状态,它们是相互独立的。将可以共享的状态和不可以共享的状态从 常规类中 区分开来,将不可以共享的状态从类里剔除出去。客户端不可以直接创建被共享的对象,而 应当使用一个工厂对象负责创建被共享的对象。 享元模式大幅度 的降低内存中对象的数量。 12、PROXY —跟 MM 在网上聊天,一开头总是“hi,你好”,“你从哪儿来呀?”“你多大了?”“身 、 高多少呀?”这些话,真烦人,写个程序做为我的 Proxy 吧,凡是接收到这些话都设置好了 自动的回答,接收到其他的话时再通知我回答,怎么样,酷吧。 代理模式: 并由代理对象控制对源对象的引用。 代理模式 代理模式给某一个对象提供一个代理对象, 代理就是一个人或一个机构代表另一个人或者一个机构采取行动。某些情况下,客户 不想 或者不能够直接引用一个对象, 代理对象可以在客户和目标对象直接起到中介的作用。 客户 端分辨不出代理主题对象与真实主题对象。代理模式可以并不知道真 正的被代理对象,而 仅仅持有一个被代理对象的接口, 这时候代理对象不能够创建被代理对象, 被代理对象必须 有系统的其他角色代为创建并传入。 行为模式 13、CHAIN OF RESPONSIBLEITY —晚上去上英语课,为了好开溜坐到了最后一排,哇,前面 、 坐了好几个漂亮的 MM 哎, 找张纸条, 写上“Hi,可以做我的女朋友吗?如果不愿意请向前传”, 纸条就一个接一个的传上去了,糟糕,传到第一排的 MM 把纸条传给老师了,听说是个老 处女呀,快跑! 责任链模式: 在责任链模式中,很多对象由每一个对象对其下家的引用而接起来形成一条 责任链模式 链。 请求在这个链上传递, 直到链上的某一个对象决定处理此请求。 客户并不知道链上的 哪 一个对象最终处理这个请求, 系统可以在不影响客户端的情况下动态的重新组织链和分配责 任。处理者有两个选择:承担责任或者把责任推给下家。一个请求可以 最终不被任何接收 端对象所