Tango Blog

Happy Hacking

设计模式(14)–适配器模式

1.模式适用性 2.模式结构 3.实现 4.总结 当系统的数据和行为都正确,但是接口不符合使用要求时,我们应该考虑使用适配器模式,目的是控制范围之外的一个原有对象与某个接口匹配。适配器模式主要应用于希望复用一些现存的类,但是接口又与复用环境要求不一致的情况。在使用C++的情况下我们可以利用C++的多重继承实现类适配器模式,另一个是对对象适配器模式。《设计模式》中如此描述...

Linux实时框架Xenomai简介

1. Xenomai是什么 2. Xenomai架构 2.1 双内核结构 2.2 Adeos 3. 性能测试 1. Xenomai是什么 Xenomai是一个于Linux平台上使用的实时框架,其使得各种实时操作系统(vxWorks、QNX等)的API在Lin...

设计模式(13)–状态模式

1.模式适用性 2.模式结构 3.实现 4.总结 状态模式主要解决的是当控制一个对象状态转移的条件表达式过于复杂的情况。把状态逻辑转移到表示不同状态的一系列类当中,可以把复杂的判断逻辑简化。解决状态机相关的问题非常适合使用状态模式,当状态较多的情况下,我们需要修改状态机则只需要修改状态迁移前后相关的类,而不是到一连串的case语句下修改。 DP对状态模式的概括: ...

设计模式(12)–抽象工厂模式

1.模式适用性 2.模式结构 3.实现 4.总结 我们之前说道工厂方法模式,工厂方法模式只只定义了一个类型的产品,并且工厂也是只提供了一个类型产品的生产。在抽象工厂模式中,我们的工厂丰富了产品线,不仅仅只能生产一种产品,而是多种产品,并且可以通过扩展产品线或更改产品的组合构成一个符合使用的产品。设计模式中如此描述抽象工厂模式: 提供一个创建一系列相关或相互依赖对...

TLV编码通信协议设计

1. 通信协议 2. TLV编码 2.1. Tag 1) Tag首节字说明 2) Tag后续字节说明 2.2. Length 1) 定长方式 2) 不定长方式 ...

C++构造函数使用冒号’:’初始化成员变量

C++构造函数后根据冒号’:’的作用是初始化对象的成员变量,但这个初始化方式与构造函数初始化成员变量有些差别:构造函数中无法对常量成员与引用成员进行初始化,而使用冒号方式可以解决这个问题,下面看个例子: class A { public: A(int &c) { n = 1; m = ...

设计模式(11)–观察者模式

模式适用性 模式结构 实现 总结 观察者模式也称为发布-订阅模式,属于行为模式。观察者模式定义了一种一对多的依赖关系,多个观察者可以订阅同一个主题,在主题发生变化的时候,所有观察者都接收到更新通知,以更新自己的状态。观察者模式在维护系统相关对象一致性的时候,可以降低各个类之间的耦合,使主题与观察者可以独立开来。 模式适用性 当一个对象的改变需要给变其它对象...

设计模式(10)-建造者模式

建造者模式属于创建型模式,即用以创建对象。创建者模式定义了一个Builder,这个Builder规定了创建对象的一系列必须实现的动作,所以实现这个Builder的子类必须实现这一系列的动作,那么就不会因为少了哪个动作而导致创建对象出问题,应为少了某个动作编译器也不会让代码通过。看一下《设计模式》是如何定义建造者模式的: 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创...

(转)IT项目管理的一些心得

原文出自:http://cnn237111.blog.51cto.com/2359144/1317922 工作多年,也有一些项目管理经验,在此总结一些自己对于项目管理的看法。 开始阶段 项目启动的时候,个人认为最重要的是要弄清楚项目的目标和项目的范围,包括需求范围和时间范围。 通常,我最怕听到领导说:“把这个工作做一下,需求大概是balabala”,“啥时要?”,“不知道,你先做着,...

设计模式(9)-门面模式

1.模式适用性 2.模式结构 3.实现 为子系统中的一组接口提供一个一致的界面, Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。将一个系统划分成为若干个子系统有利于降低系统的复杂性。一个常见的设计目标是使子系统间的通信和相互依赖关系达到最小,它为子系统中较一般的设施提供了一个单一而简单的界面。 1.模式适用性 当需要为一个复杂子系...