(我使用Python / Qt,但这可能适用于任何语言......)
我有一个模型,它是一个容器对象,支持__len__(...)
和__getitem__(...)
等功能。我实际上是使用numpy实现一个自定义环形缓冲区,但是这个'除了这一点。它还具有append(...)
功能。
我还有一个视图,它是一个UI元素(派生自QWidget
)。它有一个按钮,一个QTableView
的实例,它还有一个append(...)
函数,它根据UI的状态有条件地将数据转发给底层模型。它还有一个model()
函数,它从QTableView
实例返回模型,即它只是return myTableViewInstance.model()
我的问题是View是否还应包含直接转发给模型的__len__()
和__getitem__(...)
等函数,因此视图的用户只能进行交互使用视图,或者用户是否合法通过model()
获取模型,并直接对模型执行操作,例如len(myView.model())
或myView.model()[1:100]
一方面,将视图向下转移到模型上似乎是多余的,但是看起来像是在欺骗/肮脏以获取模型并直接操作它,因为这违反了模型的精神/图。