
新浪微博:东门兜
第24章 包(NSBundle)Cocoa的包模式的实现把可执行代码与相关资源保存在一起,并且使你能够避免在应用程序内硬编码指向资源的路径。通过使用标准的包目录层次结构并提供相关的开发工具(如Xcode),Mac OS X简化了包的创建。不过,使用目录层次结构存储资源和代码同时有其优点和缺点。一种优点是:用户可以查看每个包的内容,并利用针对每种资源类型的标准应用程序编辑资源。相应的缺点是:用户可以在任何时间检查、修改或删除应用程序的资源。
第25章 类簇(NSCFString)通常,当人们询问如何对类簇进行子类化时,常见的答案如下:“不要这样做——纯粹是浪费时间。”通常,需要做的工作远远超过了得到的任何好处,并且其他模式提供了子类化的替代技术,对类簇进行子类化的一个良好理由是:如果性能测量和跟踪显示特定的类簇导致了应用程序中的瓶颈,那么这样做就可以提升性能。但是随着Cocoa逐渐成熟,甚至性能方面的原因也消失了。
第26章 外观(NScolorPanel)外观设计模式隐藏了复杂性并且减少了代码耦合,但是该模式可能被误用。当通常需要子系统的完全复杂性时,简化的外观只会增加极少的价值,并且实际上可能增加有效地使用子系统所需的工作量。如果外观接口过于复杂或者复制了隐藏类的太多细节,它有可能没有什么价值。
外观对象通常是单例。例如,Cocoa为每个应用程序提供了一个NScolorPanel实例。
有时可以使用类簇模式替代外观模式。类簇也为框架用户隐藏了实现的复杂性。类簇的用户只会看到相对简单的公共接口,它隐藏了多个特殊化的子类逐一实现接口的事实。
转发给Objective-C对象添加了极大的灵活性。消息可能在不同的时间捕获和重发、重发多次、发送给另一个或多个其他对象、被改变或替换其他消息、偶尔被忽略等。转发也可用于允许一个对象具有子对象的一些或全部行为。
转发支持代理对象的实现。代理表示其他对象以及用于代替它们。这可用于简化在远程对象之间传递消息,因为无论你是在与代理还是实际的对象打交道,用于发送消息的代码都是相同的。代理通过截获消息逐个实例地控制对其他对象的访问,或者改变其他对象的行为。
可以使用一种特殊类型的代理(即跳板对象)实现一个消息希望把另一个消息用作参数的设计。Cocoa中的撤销和重做系统就是这样的一个示例,但是高阶消息发送一般化了这个概念。
为管理一组相关对象的实例化和访问提供统一的接口。许多管理者使用和拓展单例模式:它们本身就是单例,并且它们可能确保它们管理的对象是唯一的。
可以借助NSFontManager类最清楚地查看这个模式。NSFontManager具有两个关键任务。第一个是控制对NSFont实例的访问。此外,它还会跟踪当前使用的字体,使得它可以保留NSFontPanel,并且相应地更新应用程序的字体菜单。在第二种角色中,它充当应用程序的控制器层的一部分。
管理者模式是其他一些模式(如单例、外观和控制器)的融合与一般化。许多管理者(如NSFontManager、NSinputManager和NSLayoutManager)在应用程序内执行类似于控制器的功能。一些管理者是单例,如NSFontManager及其他一些类。
在Cocoa中遇到以“Manager”结尾的类名时,就暗示了它的一个或多个角色。在自定义的代码中,当需要用于管理其他类的实例的类时,就应该使用管理者,尤其是在需要确保唯一性时。
控制器任务的列表可分为两个一般类别:协调任务和调解任务。协调任务包括加载模型和视图子系统以及提供数据源。调解任务控制视图对象与模型对象之间的数据流量,最小化子系统之间的耦合,同时使它们保持同步。
第30章 核心数据模型模型由对象组成,它们为应用程序提供了独特的能力和信息存储。模型包含用于处理应用程序数据的规则。模型提供了查看、编辑或处理的应用程序数据在内存中的表示。
模型通常负责应用程序数据的持久存储。模型必须以某种方式加载或存储数据。持久存储的常见形式包含:磁盘驱动器上的文件、客户-服务器数据库,以及最近的“云”计算,其中将数据存储在匿名的远程服务器上,并且使用URL访问它们。
一些模型需要处理大量的数据,并且同时把所有数据都保持在内存中是不实用的。在这些情况下,模型有时包含搜索功能和筛选器,用以限制在内存中同时存储的数据量。
模型包含用于 *** 纵数据的逻辑或规则。一些数据可能使用特定于应用程序的算法从其他数据计算得到。数据可能被约束为特定的类型,比如“日期”或“正整数”。数据值可能定义了最小值和最大值。模型提供了数据验证,以确保满足约束条件。
模型管理对象之间的关系。例如,存储关于图书和出版社的信息的模型可能包含以下限制:一对多,多对多等等。
在模型-视图-控制器模式内,视图子系统用于展示信息,并且允许用户与信息交互。视图为应用程序提供了外观(外表)和感觉(用户交互)。
第32章 绑定和控制器绑定使模型对象与视图对象保持同步,使得在一个子系统中所做的更改会自动反映在另一个子系统中。像几乎所有Cocoa技术一样,绑定被实现成减少或消除对象之间的耦合。
总结以上是内存溢出为你收集整理的《Cocoa设计模式》读书笔记(3)全部内容,希望文章能够帮你解决《Cocoa设计模式》读书笔记(3)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)