组件接口(API)设计指南[4]-通知(Notifications)「建议收藏」

组件接口(API)设计指南[4]-通知(Notifications)

大家好,又见面了,我是全栈君。

*返回文件夹阅读其它章节: http://blog.csdn.net/cuibo1123/article/details/39894477


通知(Notifications)

    通知是托付协议的还有一半。我的立场是。假设你使用托付协议(你因该在全部适合的地方使用),就加入一个相同功能的通知。以使它提供完整的托付/通知方案。

    在MGTileMenu中,你能够找到关于通知的接口文件:MGTileMenuController

规则23: 通知尾随托付方法

    在托付方法(适当的。不是数据源方法)和通知之间存在着天生的对应关系。你能够在你代码的不论什么地方使用他们。而达到全然相同的目的。

    假设你有一个关于事件发生的托付。你通常也应该提供一个相同目的的通知。做到即使把托付方法全部移除,使用者也依旧能够通过通知来实现对应功能。

    托付方法的參数应该与通知的‘userInfo(通知附加值)’内容匹配。通知与您在托付中直接传递參数有一个明显的差别,它通常须要将信息装载到字典(NSDictionary)中。

    托付方法:

(void)tileMenuWillDisplay:(MGTileMenuController *)tileMenu;
(void)tileMenuDidDisplay:(MGTileMenuController *)tileMenu;

    对应的通知:

externNSString *MGTileMenuWillDisplayNotification;
externNSString *MGTileMenuDidDisplayNotification;

 

规则24: 不要吝啬‘userInfo(通知附加值)’ 

    给通知对象所须要的足够信息。

请记住,通知接收器可能(差点儿总是会)不持有托付或数据源组件的引用。

    问问自己什么是实用的,并提供对应信息。

最起码,你必须确保提供给对应托付方法的參数都包括在了userInfo的对象中。

    托付方法:

(void)tileMenu:(MGTileMenuController *)tileMenuwillSwitchToPage:(NSInteger)pageNumber;
(void)tileMenu:(MGTileMenuController *)tileMenudidSwitchToPage:(NSInteger)pageNumber;

    对应的通知:

// 通知userInfo包括一个键“MGPageNumber”
#defineMGPageNumberKey @”MGPageNumber”
externNSString *MGTileMenuWillSwitchToPageNotification;
externNSString *MGTileMenuDidSwitchToPageNotification;

规则25: 測试的地狱

    最后,全部事情大家都已经知道了。

软件project专业化第101条:确保它确实能够工作。

    是否使用正式的TDD(測试驱动开发)取决于你。但測试本身是不可能做到全面的。每个托付方法、每个通知、每个定制点所共同组成的千千万万种组合可能出现各种问题。

    出现缺陷,首先应该找到并修复他们。假设你在赶时间,能够裁切功能。你一定会对无bug上线的问题感到苦恼。

阅读下一章节: http://blog.csdn.net/cuibo1123/article/details/39894477

-------------------------

英文原名《API Design
       作者Matt Gemmell
       原名链接http://mattgemmell.com/api-design/

中文版由xoneday翻译
       欢迎訪问译者博客:http://blog.xoneday.com
       新浪微博:@xoneday某天

假设这片译文给您带来了帮助,希望您能通过下载我的APP来支持我:
豆瓣读书:https://itunes.apple.com/cn/app/id695492935
便签夹:https://itunes.apple.com/cn/app/id580552733

组件接口(API)设计指南[4]-通知(Notifications)「建议收藏」           组件接口(API)设计指南[4]-通知(Notifications)「建议收藏」

             便签夹                                        豆瓣读书


*转载声明:请勿删减作者/译者信息与支持部分的内容。如不接受此条款请勿转载。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/116183.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 单向链表之删除节点(C语言实现)「建议收藏」

    单向链表之删除节点(C语言实现)「建议收藏」链表的创建查看删除节点就是将某一节点从链中摘除。将待删节点与其前一节点解除联系(中间或尾部)或本阶段删除(头节点),并释放相应空间(free)。删除的第一步是找到要删除的节点,同链表查找,如果找不到或链表为空,提示未找到,找到后根据情况删除此节点。删除节点两种情况:第一个节点,后面节点。步骤:1、链表为空:不用删除2、链表不为空:先循环找要删除的节点1)找到了1>找

    2025年8月5日
    2
  • React中使用superagent的get请求

    React中使用superagent的get请求写在前面这个真三分钟就可以上手系列 原来用过 axios 但是有项目需要用这个 发现 superagent 的用法是真的很简单 参考博客 https www jianshu com p 72691eb6a4f3 写得太好了 0 使用方法 链接的博客写得很详细 安装 npminstallsu 导入 importajaxfr superage

    2025年7月26日
    5
  • S3服务器规格和性能指标,云服务器s3与s4

    S3服务器规格和性能指标,云服务器s3与s4云服务器s3与s4内容精选换一换创建一台或多台云服务器。V1.1版本创建云服务器的接口兼容了V1版本创建云服务器(按需)的功能,同时合入新功能,支持创建包年/包月的弹性云服务器。本接口为异步接口,当前创建云服务器请求下发成功后会返回job_id,此时创建云服务器并没有立即完成,需要通过调用查询任务的执行状态查询job状态,当Job状态为SUCCESS时代表云服务器创在申请SAPS/4HAN…

    2022年5月11日
    59
  • c++ 优先级队列_低优先级队列要等几局

    c++ 优先级队列_低优先级队列要等几局作者有话说:本来兴致勃勃的准备写一篇优先级队列的总结,但查资料时发现一篇写的不错的博文,偷个懒!!!!!!!!!!!转载大神的就ok了。https://www.cnblogs.com/xzxl/p/7266404.html一、相关定义优先队列容器与队列一样,只能从队尾插入元素,从队首删除元素。但是它有一个特性,就是队列中最大的元素总是位于队首,所以出队时,并非按照先进先出的原则进行,而…

    2022年9月24日
    3
  • pycharm自己设置补全内容

    pycharm自己设置补全内容pycharm自己设置补全内容学习网络爬虫时,发现我们写一个代码总是要到浏览器上复制User-Agent,或者到自己之前保存好的文件里复制,当然直接能把浏览器的User-agent一个字母不拉的写出来的牛人不在此列。所以我在pycharm上自定义了一个补全模板,可以帮我快速填写User-agent,如下图:1.首先打开pycharm的–》设置,然后选择–》编辑器>活动模板2.然后点右边的‘+’添加自定义代码内容3.然后编辑这个模板说明:缩写:User-Agent这里填写的是

    2022年8月25日
    7
  • Python网页爬取_在pycharm里面如何爬取网页

    Python网页爬取_在pycharm里面如何爬取网页使用Python爬取简单数据闲暇时间学习Python,不管以后能否使用,就算了解计算机语言知识。因为有一点Java基础,所以Python的基本语法就很快的过了一遍,看了视频之后直接就开始编写,表达或许有点混乱,以后慢慢改进。一、导入爬取网页所需的包。frombs4importBeautifulSoup#网页解析importxlwt#excelimportre#正则表达式importurllib.request,urllib.error#指定url,获取

    2022年10月13日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号