多个View与Doc的关系

来源:互联网 发布:重庆软件职业技术学院 编辑:程序博客网 时间:2024/04/29 05:14

多个View与Doc的关系

Posted by: roboter in 架构, C++

现在的系统框架中,设计了多个view,每个view可能都需要访问doc数据,doc的数据会比较多,不可能把所有数据都放在一个doc类中,可能会有很多doc小类,分别实现不同的数据处理,如短消息数据类,Call数据类等等。有一些view可能会需要处理两个以上的doc数据类,而有一些doc数据类可能会被多个view使用,这就要求每个doc类在系统中只能有一个实例。

怎么定义一个简单的规则,使框架不会被后面开发的应用所影响?最高目标是:框架开发完成之后,框架代码就不再更改了。

最基本的方法的是定义一个doc基类,一个view基类,view包含doc基类的指针,view需要使用具体的doc时,强制转换成具体的doc类。这样各个view都需要进行强制转换,同时有多个doc类的view,还需要多一些判断,view的接口要多一些,导致框架也不是很稳定,因为框架需要调用view设置doc。如果一个view想支持新的doc类,更加麻烦,修改的地方会比较多。在MFC有doc、view模板,可以解决简单的doc、view对应关系,但在此处不行。

根据liskov替换原则,派生类可以替换基类的行为,这就要求在基类中不能有强制类型转换。强制类型转换以及switch case都不是很好的做法,虽然不可能完全避免,但是尽量只用到一次,把变化减到最少。

如果不能强制类型转换,只能考虑在view中直接声明所需要的doc子类,这是采用了引用的方法。在view的初始化过程中,由应用开发人员从框架中获取相应的doc实例指针赋给view的doc成员。这样view也不用对doc强制类型转换了。