gpt4 book ai didi

cocoa - Sketch 示例 AppKit 应用程序中的类如何分为模型/ View / Controller ?

转载 作者:行者123 更新时间:2023-12-03 16:16:05 25 4
gpt4 key购买 nike

我对 Sketch 示例 AppKit 应用程序(位于/Developer/Examples/AppKit/Sketch)中作为模型或 View 的类的定义有点困惑。 SKTRectangle、SKTCircle 等类被视为模型类,但它们具有绘图代码。

我的印象是模型应该没有任何 View /绘图代码。

有人可以澄清一下吗?

谢谢。

最佳答案

Sketch 的开发者在自述文件中概述了他/她的基本原理:

<小时/>

模型- View - Controller 设计

Sketch的Model层主要是SKTGraphic类及其子类。 Sketch 文档由 SKTGraphics 列表组成。 SKTGraphics 主要是数据承载类。每个图形都保留了表示它是什么类型的图形所需的所有信息。 SKTGraphic 类定义了一组用于修改图形的基元方法,并且某些子类添加了自己的新基元。 SKTGraphic 类还定义了一些用于修改图形的扩展方法,这些方法是根据基元实现的。

SKTGraphic 类定义了一组允许其自行绘制的方法。虽然严格来说这似乎不应该是模型的一部分,但请记住,我们正在建模的是视觉对象的集合。尽管 SKTGraphic 知道如何在 View 中渲染自身,但它本身并不是 View 。

<小时/>

不知道这个答案是否能让您满意。我个人对 MVC 的体验是,虽然模型、 View 和 Controller 的分离是一件“好事”,但在实践中,层与层之间的界限常常变得模糊。我认为为了方便,设计上经常会做出妥协。

特别是对于 Sketch,模型知道如何在 View 中绘制自身,这对我来说是有意义的。让每个 SKTGraphic 子类知道如何绘制自身的另一种方法是让一个 View 类了解每个 SKTGraphic 子类以及如何渲染它。在这种情况下,添加新的 SKTGraphic 子类将需要编辑 View 类(可能向 if/else 或 switch 语句添加新子句)。在当前的设计中,可以添加 SKTGraphic 子类,无需对 View 类进行任何更改即可使其正常工作。

关于cocoa - Sketch 示例 AppKit 应用程序中的类如何分为模型/ View / Controller ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/336039/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com