摘要: 代理模式:为另一个对象提供一个替身或占位符以访问这个对象。 在我们学习代理模式之前,我们先了解下代理模式中的三个角色。 抽象角色:声明真实对象和代理对象的共同接口。 代理角色:代理对象角色内部含有真实对象的引用,从而可以操作真实对象。 同时代理对象提供与真实对象相同的接口,以便任何时刻都能替代真实对 阅读全文
posted @ 2017-03-13 20:43 哀&RT 阅读(168) 评论(0) 推荐(0) 编辑
摘要: 状态模式:允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类。 策略模式和状态模式时双胞胎,策略模式时围绕可以互换的算法来创建成功业务的。状态模式时通过改变对象内部的状态来帮助对象控制自己的行为。 下面我们看看状态模式的场景 场景1:有一个扭糖果机器,在投入1元硬币后,扭动曲柄,然后机 阅读全文
posted @ 2017-03-09 21:14 哀&RT 阅读(180) 评论(0) 推荐(0) 编辑
摘要: 组合模式:允许你讲对象组合成树形结构来表现“整体/部分”层次结构。组合能让客户以一致的方式处理个别对象以及对象组合。 在上一节我们讲述了迭代器模式,这节我们讲述的是组合模式,通常组合模式和迭代器模式共用才会达到比较好的效果,接下来我们还是拿上一节讲述的场景,在上个场景中,如果晚餐店的菜单中有甜点这个 阅读全文
posted @ 2017-03-09 16:38 哀&RT 阅读(170) 评论(0) 推荐(0) 编辑
摘要: 迭代器模式:提供一种方法顺序访问一个聚合对象中的各个元素,而不是暴露其内部的表示。把游走的任务放在迭代器上,而不是聚合上,这样就简化了聚合的接口,也让责任各得其所。 场景:有一家早餐店和一家晚餐店合并成一家餐厅,现对两个餐厅的菜单进行合并,两家菜单都一样,有name,decription,price 阅读全文
posted @ 2017-03-09 14:26 哀&RT 阅读(94) 评论(0) 推荐(0) 编辑
摘要: 模板方法模式:在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。 场景,对于咖啡来说,我们需要把水煮沸,然后用沸水冲泡咖啡,再把咖啡倒入杯子中,最后加入糖和牛奶,对于茶而言,也是先把水煮沸,用沸水去浸泡茶叶,在把茶倒入杯 阅读全文
posted @ 2017-03-07 19:52 哀&RT 阅读(176) 评论(0) 推荐(0) 编辑
摘要: 外观模式:提供了一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统更容易使用。 场景:有一个家庭影院,里面有爆米花机,投影,DVD机,音响等,然后等我们要开始享观赏电影的时候,我们不得不执行打开爆米花机,开始爆米,关闭爆米花机,关闭灯,放在投影....等等一系列操作,然后观 阅读全文
posted @ 2017-03-07 17:05 哀&RT 阅读(156) 评论(0) 推荐(0) 编辑
摘要: 适配器模式:将一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不见人的类可以合作无间。 在生活中,一个二插转换器就是一个适配器,本来不能将二插的插头插入三插插口,利用了这个转换器就可以实现,这个二插转换器在中间起到了一端连接插座,一端连接插头的作用。 场景:之前我们看过鸭子Duck类,现在 阅读全文
posted @ 2017-03-07 11:46 哀&RT 阅读(173) 评论(0) 推荐(0) 编辑
摘要: 命令模式:将“请求”封装成对象,以便使用不同的请求、队列或者日志来参数化其他对象。命令模式也支持可撤销的操作。 下面我们利用一个场景来进行理解理解 场景:有一个遥控器,可以控制电灯、音响的开关,遥控器发出一个打开或关闭电灯或音响的请求,这个请求被我们封装成了命令对象。然后将命令对象传给接受者(即电灯 阅读全文
posted @ 2017-03-06 16:49 哀&RT 阅读(178) 评论(0) 推荐(0) 编辑
摘要: 策略模式:定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。 说白了就是将客户和算法分离开来,下面客户就是Duck的具体类,算法就是封装好的飞行行为,呱呱叫行为。让我们直接看代码吧。 首先创建客户类Duck代码,具体实现类实现抽象类Duck 接着实现算法,即 阅读全文
posted @ 2017-03-06 15:17 哀&RT 阅读(120) 评论(0) 推荐(0) 编辑
摘要: 装饰者模式:动态地将责任附加到对象上。想要扩展功能,装饰者提供有别于继承的另一种选择。 现在,我们有一个场景,咖啡店出售各种不同的咖啡,而不同的咖啡中可以加入各种不同的调料,根据咖啡种类和加入的调料来计算价格。下面我们就用代码来简单实现下这个场景,也就是装饰者模式,其中咖啡为主体,调料是用来装饰咖啡 阅读全文
posted @ 2017-03-04 15:17 哀&RT 阅读(143) 评论(0) 推荐(0) 编辑
摘要: 观察者模式:在对象之间定义一对多的依赖,当一个对象改变状态,依赖它的对象都会收到通知,并自动更新。 在定义一对多的时候,我们把一称做主题,多称做观察者。下面我们直接看代码来简单了解观察者模式。 第一步:先创建一个主题接口,对象使用此接口来新增、删除、通知观察者。 第二步:创建一实现主题接口的实体类。 阅读全文
posted @ 2017-03-03 18:59 哀&RT 阅读(170) 评论(0) 推荐(0) 编辑
摘要: 之前将的创建方法和调用方法都是在本地服务上的,而实际情况肯定是在不同服务器上的,这种模式通常被称为远程过程调用或者RPC。 远程方法调用的注意事项: RPC在软件开发中非常常见,也经常被批评。当一个程序员对代码不熟悉的时候,跟踪RPC的性能问题是出在本地还是远程服务器就非常麻烦,对于RPC的使用,有 阅读全文
posted @ 2017-03-01 17:06 哀&RT 阅读(148) 评论(0) 推荐(0) 编辑
摘要: 准备: 这节主要讲解Rabbit的发布/订阅。前面我们所讲的是生产者将消息直接放到队列,然后消费者再从队列中获取消息。但实际上,RabbitMQ中消息传递模型的核心思想是:生产者不直接发送消息到队列。实际的运行环境中,生产者是不知道消息会发送到那个队列上,它只会将消息发送到一个交换器,交换器也像一个 阅读全文
posted @ 2017-02-24 10:49 哀&RT 阅读(212) 评论(0) 推荐(0) 编辑
摘要: 这节我们主要讲RabbitMQ的分发,由生产者发布一个任务,多个接受者去获取任务来进行加工处理。 下面介绍任务分发 一个队列的优点就是很容易处理并行化的工作能力,但是如果我们积累了大量的工作,我们就需要更多的工作者来处理,这里就要采用分布机制了。 我们创建一个新的生产者NewTask 然后我们创建一 阅读全文
posted @ 2017-02-23 11:41 哀&RT 阅读(195) 评论(0) 推荐(0) 编辑
摘要: 在学习RabbitMQ之前,我们先简单了解几个概念。 RabbitMQ是什么: RabbitMQ 是一个消息代理。主要的原理就是通过接受和转发消息。 RabbitMQ是实现AMQP(高级消息队列协议)的消息中间件的一种,消息中间件主要用于组件之间的解耦。服务器端用Erlang语言编写, 支持多种客户 阅读全文
posted @ 2017-02-22 16:30 哀&RT 阅读(211) 评论(0) 推荐(0) 编辑