我正在研究Aaron Hillegass的Mac OS X可可编程,并且正在做第18章的挑战。基本上,挑战是编写一个可以使用鼠标绘制椭圆的应用程序,然后另外添加保存/加载和撤消支持。我正在尝试为遵循MVC的该应用程序设计一个很好的类设计。这就是我的想法:

有一个NSView子类,它代表一个椭圆形(例如JBOval),我可以使用它轻松绘制椭圆形。
有一个包含JBOval并绘制它们的主视图(JBDrawingView)。

问题是我不确定如何添加存档。我应该存档每个JBOval吗?我认为这可以工作,但是归档NSView似乎不太有效。关于更好的课堂设计有什么想法吗?

谢谢。

最佳答案

有一个NSView子类,它代表一个椭圆形(例如JBOval),我可以使用它轻松绘制椭圆形。


听起来不是很MVC。在我看来,“ JBOval”听起来像是模型班。


  有一个包含JBOval并绘制它们的主视图(JBDrawingView)。


我喜欢这部分。

我的建议是让每个模型对象(JBOval等)都能够创建代表其自身的Bézier路径。 JBDrawingView(并且应该为它命名一个更好的名称,因为所有视图都是按定义绘制的)应该向每个模型对象询问其Bézier路径,填充设置和笔触设置,并相应地绘制该对象。

这样可以保留在它们所属的各种形状类中如何绘制(路径,线宽,颜色等)的知识,同时还将实际的绘制代码保留在其所属的视图层中。

从这一点来看,将归档代码放置在何处的答案应该在直观上显而易见。

关于objective-c - 简单绘图应用程序设计— Hillegass书,第2章18岁,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3039683/

10-10 13:18