title: OpenGL+C++界面绘图如何设计？
desc: 想设计一个基于opengl的界面系统，绘制特定界面。目前设计如下，想请教下这样的设计是否合理：<br>基类A：包含listltAgt children<br>draw函数调用children的draw函数和自己的virtual toDraw函数<br>resize函数：调用children的resize函数和自己的virtual toResize函数<br>eventHandler函数：调用children的eventHandler函数和用case判断event调用virtual aSpecificEventHandler函数<br><br>使用的时候：<br>所有界面派生类要继承A<br>每个界面派生类实例都要加为某个的类的chidren<br><br>问题是觉得这样写出来的东西好麻烦，尤其是eventHandler的实现部分。<br>有些界面会有很多参数，所以把参数单独成了一个类。那么在实现界面类的时候<br>是多继承好呢，还是把参数类做成一个成员呢？<br>另外，由于界面是一层一层的嵌套的，元素多了之后，对其他人读来说很不明显，往往找不到画某个东西是在哪里调用的，或者需要跟踪好半天才能理清结构，从而让协同开发变得很低效，有什么方法可以改进这种结构吗？
topic: 用户界面设计
content: 你不可能从一开始就获得很好的设计。要经历几次原型系统的迭代你才能发现很多具体的问题，并在实现的过程中思考正确的解决办法。通过你的问题就知道你对于布局系统事件dispatch，以及界面的层次overlay键盘鼠标响应自定义外观等复杂的机制都没有思考过，或者根本没有意识到你将要面对的是哪些问题。所以还是不要管设计赶紧先去做吧。
answerer_tags: CS PhD student