之前开发了一套c语言交互系统,当时设计了业务数据和用户数据,业务数据负责对业务操作的管理,控制数据负责的业务的结果进行管理。实现了模块和全局的解耦。全局对局部的支撑。
昨天晚上看了FFMPEG的数据设计架构,隐隐绝对当时的设计存在一些不足之处。
FFMPEG的数据设计主要分为一下三种:
1、业务数据,在业务运行过程中生成,并提供业务接口支撑,接口为模块抽象出的对外接口。
2、全局数据抽象部分,相当于c++的基类
3、全局数据私有部分,相当于c++的子类
业务运行时,调用业务数据中的支撑接口,实现具体业务。
FFMPEG数据架构是通过业务数据对外暴露业务接口,通过业务数据了解业务过程,通过全局数据实现具体业务功能。
好处为:
1、使用了面向对象技术,易于理解和扩展
2、使用了面向接口编程,低耦合,模块容易复用
通过对比,可以发现之前系统设计的不足之处
1、业务数据没有集成接口,功能过于单一
2、全局数据存在意义不强,需要承载更多的东西
3、无法通过数据清晰展示业务结构
4、模块复用度不高
总结:
1、FFMPEG和交互式系统的不同,上面的不足之处不一定都能够用FFMPEG的设计方式解决,但是其始终面向对象和面向接口的设计思想需要我们深刻理解,并引入。
注:本人设计交互式系统时还未接触过c++,所以系统的面向过程痕迹很重。