我正在编写一个应用程序,用于绘制小部件/菜单/控件等以创建应用程序模型。每个屏幕都表示为小部件的集合,并且每个小部件都是简单的类,例如
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实现它,但这与答案无关。