- 博客(11)
- 资源 (21)
- 收藏
- 关注
原创 餐馆那些事之:Facade Pattern
1. 概述Facade Pattern是一种结构性模式。对于一个大系统里面有多个子系统,为了避免client和各个子系统进行复杂的交互,对子系统进行封装,对外提供一个统一的接口。使子系统的使用更加简单。类图:subsystem_x:具体的工作子系统Facade:子系统封装subsystem_x:具体的工作子系统Facade:子系统封装2.实例客人到了餐馆
2012-02-27 20:31:11 1689
原创 餐馆那些事之:Decorator Pattern
1. 概述Decorator Pattern:提供了一种通过组合给类增加职责的方法。和通过子类给类添加责任相比,这种方式更加灵活。类图:Object:抽象接口ConcreteObject:工作类(需要添加责任的类)Decorator:维护一个指向Object的指针,从而可以通过组合的方式为ConcreteObject类添加责任ConcreteDecoratorX
2012-02-27 20:30:51 1315
原创 餐馆那些事之:Mediator Pattern
1. 概述Mediator Pattern:封装了一组对象之间的交互,使得对象之间保持松耦合的关系,避免对象维护复杂的关系交互。简单的说,Mediator封装的是交互。类图:object实例之间的交互,统一由Mediator维护。2. 实例餐馆有cook和waiter,cook之间需要彼此交流配合,也需要和waiter进行交流, 例如一个厨师请另一个厨师帮忙切菜
2012-02-25 10:49:37 1380
原创 餐馆那些事之:State Pattern
1. 概述State Pattern即状态模式。一个简单的case:对于自动门来说,有两种状态:open和close,如果门处于open状态,如果用户再按open按钮,没有反应,如果按下close键,则门关闭。switch...case...实现:const int OPEN = 1; // door open 状态const int CLOSE = 2;// door clo
2012-02-23 20:49:31 1495
原创 c++类型识别及转换
1. 概念RTTI(Run-Time Type Information)即运行时类型识别,c++通过RTTI实现对多态的支持。c++是静态类型语言,其数据类型是在编译期就确定的,不能在运行时更改。为了支持RTTI,C++提供了一个type_info类和两个关键字typeid和dynamic_cast。type_info :存储特点类型的相关信息,常用来比较对象类型,type
2012-02-21 22:24:11 8069
原创 餐馆那些事之:Visitor Pattern
1. 概述Visitor Pattern本质上是通过方法和数据分离,从而实现:1)在不影响现有数据结构的情况下,添加新的方法2)双分派(在选择一个方法的时候,不仅仅要根据消息接收者的运行时类型,还要根据参数的运行时类型)3)Recovering lost type information(一个很好的例子:http://sourcemaking.com/design_patterns
2012-02-21 21:02:51 1948
原创 餐馆那些事之:Adapter Pattern
1. 概述Adapter pattern即适配器模式,其主要用于:1)一个类的接口转换成客户希望的另外一个接口,从而使得原本由于接口不兼容而不能一起工作的那些类可以一起工作2)给一个现存的类提供一个新的接口3)包装现有类,使其能使用新的系统Adapter pattern 类图:Client:定义客户请求接口Adaptee:需要进行适配的类Adapter:适配
2012-02-19 21:31:37 1306
原创 餐馆那些事之:Proxy Pattern
1. 概述Proxy Patter模式:通过对某个对象提供代理,从而控制&隔离对这个对象的访问。类图:Object:定义了Concrete_object和Proxy的公用接口,这样才能在需要使用Concrete_object的地方使用Proxy代替Concrete_object:具体实现类Proxy:Concrete_object的代理Proxy Pattern常使
2012-02-18 10:52:45 1499
原创 餐馆那些事之:Null Object
1. 概述在开发过程中,我们常常会越到这么一种case:向一个对象发送消息,每次都必须先检查对应的对象是否存在。如果对象存在执行相应操作,对象不存在则获取默认值或者做一些默认的操作。NULL object即使这么一种模式:通过提供NULL对象,从而使客户在向对象发送消息时,不关心对象是否存在,NULL对象中保存相应的默认值或方法。NULL object的优势个人理解:1)降低代码复
2012-02-16 14:44:21 1485
原创 餐馆那些事之:Command Pattern
1. 概述Composite Pattern是一种非常优雅的模式,实际使用中出现频率相当高。其通过对请求进行封装,解除了请求的发布者和具体实现者之间的耦合关系。类图:Customer:命令的发布者Command:命令的接口Concreate_command:具体命令的实现Worker:命令的具体执行者2. 实例一个顾客跑到餐馆吃饭,他告诉服务员需要点的菜
2012-02-14 03:04:27 2768 1
原创 Redis源码分析:主从复制
源码版本:redis 2.4.4redis的主从复制实现简单却功能强大,其具有以下特点:1. 一个master支持多个slave连接,slave可以接受其他slave的连接2. 主从同步时,master和slave都是非阻塞的redis主从复制可以用来:1. data redundancy 2. slave作为master的扩展,提供一些read-only的服务3.
2012-02-06 22:07:47 10145
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人