【发布时间】:2009-09-12 04:07:22
【问题描述】:
我正在编写一个应用程序,用于绘制小部件/菜单/控件等以创建应用程序模型。每个屏幕都表示为小部件的集合,每个小部件都是简单的类,例如
class Model(object):
def __init__(self):
self.widgets = []
class Widget(object):
def __init__(self):
self.x, self.y = 0, 0
self.w, self.h = 100,20
self.text = "Widget"
现在用户可以在编辑器中编辑 x,y,w,h 并在许多视图(位置)中渲染,渲染本身可能会改变 w 和 h,因为我们希望至少显示最佳拟合。 例如文本“小部件”在不同视图中可能需要宽度 200 或 205
问题:
所以问题是渲染/视图本身会修改模型,如何避免这种情况?现在我有主视图和主模型,任何其他视图如果想要渲染副本模型并渲染它,从而避免主模型的变化。
这种方法很简单,代码仍然很简单,但需要一个不必要的模型副本,我想了很多方法来避免这种情况,但所有方法都会使代码复杂化并且可能效率不高,因为无论如何如果模型没有被复制,则渲染时-属性需要放在某个地方,例如在每个小部件的每个渲染器中。
我在 python 中实现它,但这与答案无关。
【问题讨论】:
标签: design-patterns model model-view-controller