随笔分类 -  设计模式

摘要:组合不用继承多余的函数。由此可见,组合比继承具有更大的灵活性和更稳定的结构,一般情况下应该优先考虑组合。只有当下列条件满足时才考虑使用继承:子类是一种特殊的类型,而不只是父类的一个角色子类的实例不需要变成另一个类的对象子类扩展,而不是覆盖或者使父类的功能失效最后还说一句,“优先使用对象组合,而不是继承”是面向对象设计的第二原则。但并不是说什么都设计都用组合,只是优先考虑组合,更不是说继承即使不好的设计,应该用组合,应为他们之间也有各自的优势。下面是他们之间的优缺点比比较表:组 合 关 系继 承 关 系优点:不破坏封装,整体类与局部类之间松耦合,彼此相对独立缺点:破坏封装,子类与父类之间紧密耦. 阅读全文
posted @ 2013-01-26 16:32 zaleilynn 阅读(231) 评论(0) 推荐(0) 编辑
摘要:1.尽量保持别人接口的语义,最好不要限制,或者扩大,除了核心你要封装的参数。 int zoo_exists(zhandle_t *zh, const char *path, int watch, struct Stat *stat); 可以设计为: int32_t IsExists(const string& path, int32_t watch = 0, struct Stat *stat = NULL) 其中 zhandle_t 这个核心的参数作为类的变量了,其余的参数尽量不要改,可以保持其语义的丰富以及完整,否则你就需要多写几个IsExists的特殊话接口了。有必要的时候才这么 阅读全文
posted @ 2013-01-20 13:01 zaleilynn 阅读(204) 评论(0) 推荐(0) 编辑
摘要:目前正在考虑一个单机事件处理系统的架构设计,来完成一个基于事件驱动的系统。为什么要单独设计一个事件处理系统?1 ) 容错 考虑一个场景,你添加了一个物理机器,想要上报给一个master,但是因为什么原因,无法上报,但是物理机确实已经创建了,你现在怎么办。为了保持一致性,最好的方式是缓存这个事件,然后隔一段事件继续上报。这个就是单独的事件处理系统可以帮你做的事情。2) 容易审计 所有事件都被集中处理了,特别方便进行安全以及统计处理。3) 容易扩展 方便的事件注册/处理。新增事件特别容易。目前有两个架构在考虑中:1) 有event dispatcher 类 每种事件,你运行之前需要注册一种事件类. 阅读全文
posted @ 2013-01-18 14:19 zaleilynn 阅读(176) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示