Foundation 或 UIKit 组合示例
Foundation or UIKit example of composition
我正在努力更好地理解构图的设计原则。 UIKit 或 Foundation 框架中是否有这方面的示例?
https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIKit_Framework/
根据我的经验,在明确考虑这个问题之前,似乎继承是这两个框架的主要模式。
也许我答错了你的问题,但也许这就是你要找的:
这里是关于 SO 的模拟问题:
What Design Patterns are used on iOS other than MVC?
下面是对模式的很好的描述,或许可以让您更好地了解它:
继承在 Foundation 中很少见,也不是 UIKit 的主要模式。在这两种情况下,组合都更为常见。
继承和组合之间的区别通常表示为 IS-A 与 HAS-A。 IS-A 的方法是子类化。 HAS-A 方法是委托。
考虑一个您希望只接受特定字符的文本字段。在 IS-A 风格中,您将继承 UITextField
。这在 iOS 中并不常见。相反,您传递一个委托(任何符合 <UITextFieldDelegate>
的东西),文本字段在需要时查询它。这是一种 HAS-A 方法。文本字段 "has a" 委托。
考虑 UITableView
。您想制作 table 首歌曲。在 IS-A(继承)方法中,您将 UITableView
子类化并创建 SongsTableView
。在 HAS-A(组合)方法中,您将创建一些其他对象(SongsDataSource
)并将其提供给 UITableView
。在这种情况下,UIKit 会同时使用两者;您给 UITableView
一个数据源,但该数据源通常(但不是必须)是 UITableViewController
.
的子类
类似地,虽然子类化 UIView
或 CALayer
有点常见,但使用 "stock" 视图和图层并通过添加子类来构建它们也很常见组件。这就是 HAS-A 方法。
Foundation 中几乎没有 IS-A。除了 NSObject
之外,您很少对 Foundation 类 进行子类化。考虑 NSAttributedString
。它不子类 NSString
。它 有 一个 NSString
。这是 Foundation 中通常的做事方式。您几乎从不创建自己的 NSString
、NSArray
、NSDate
、NSNumber
的子 类 或 Foundation 之外的任何其他常见类型。你把它们结合起来。
我正在努力更好地理解构图的设计原则。 UIKit 或 Foundation 框架中是否有这方面的示例?
https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIKit_Framework/
根据我的经验,在明确考虑这个问题之前,似乎继承是这两个框架的主要模式。
也许我答错了你的问题,但也许这就是你要找的:
这里是关于 SO 的模拟问题:
What Design Patterns are used on iOS other than MVC?
下面是对模式的很好的描述,或许可以让您更好地了解它:
继承在 Foundation 中很少见,也不是 UIKit 的主要模式。在这两种情况下,组合都更为常见。
继承和组合之间的区别通常表示为 IS-A 与 HAS-A。 IS-A 的方法是子类化。 HAS-A 方法是委托。
考虑一个您希望只接受特定字符的文本字段。在 IS-A 风格中,您将继承 UITextField
。这在 iOS 中并不常见。相反,您传递一个委托(任何符合 <UITextFieldDelegate>
的东西),文本字段在需要时查询它。这是一种 HAS-A 方法。文本字段 "has a" 委托。
考虑 UITableView
。您想制作 table 首歌曲。在 IS-A(继承)方法中,您将 UITableView
子类化并创建 SongsTableView
。在 HAS-A(组合)方法中,您将创建一些其他对象(SongsDataSource
)并将其提供给 UITableView
。在这种情况下,UIKit 会同时使用两者;您给 UITableView
一个数据源,但该数据源通常(但不是必须)是 UITableViewController
.
类似地,虽然子类化 UIView
或 CALayer
有点常见,但使用 "stock" 视图和图层并通过添加子类来构建它们也很常见组件。这就是 HAS-A 方法。
Foundation 中几乎没有 IS-A。除了 NSObject
之外,您很少对 Foundation 类 进行子类化。考虑 NSAttributedString
。它不子类 NSString
。它 有 一个 NSString
。这是 Foundation 中通常的做事方式。您几乎从不创建自己的 NSString
、NSArray
、NSDate
、NSNumber
的子 类 或 Foundation 之外的任何其他常见类型。你把它们结合起来。