iOS开发中的Self-Manager设计模式

栏目: IOS · 发布时间: 6年前

内容简介:iOS开发中的Self-Manager设计模式

原文

本文的灵感来自 http://blog.sunnyxx.com/2015/12/19/self-manager-pattern-in-ios/

这种模式的意义就是自己的事情自己做完,不要去给别人添麻烦,让你的功能纯粹点。

举个栗子 :你要实现一个分享功能。可能你很多地方都需要分享,那你不可能每个地方都去写一遍对不对,所以这时候你需要把分享功能抽离出来对不对,让它纯粹。

+ (void)wxShareWithImages:(NSArray *)images shareTitle:(NSString *)shareTitle shareContent:(NSString *)shareContent shareURLString:(NSString *)shareURLString response:(KZWResponseCallback)response;

你只要单独出来一个shareservice这样你不管在哪分享只要调用这个方法就可以了什么都不用管。然后你就可以发现你可以把你app的很多服务抽出来,减少冗余代码。 纯粹

再举个栗子 就是作者原文的栗子,为什么我要举相同的栗子呢,因为我还有话说:微博的头像到处都有,都需要点击头像跳转个人中心,以及包括头像的各种大v特效等。

代码是这样的:

- (void)selfManagedConfigureWithAvatarURL:(NSURL *)URL VIPInfo:(id)info UID:(NSString *)UID {
    [self configureWithAvatarURL:URL VIPInfo:info tapped:^{
        // 假设 App 结构是 Root -> TabBar -> Navigation -> ViewController
        UITabBarController *tabBarControler = (id)[UIApplication.sharedApplication.delegate.window.rootViewController;
        UINavigationController *navigationController = tabBarControler.selectedViewController;
        // 创建用户信息 View Controller
        FDUserProfileViewController *profileViewController = [FDUserProfileViewController viewControllerWithUID:UID];
        [navigationController pushViewController:profileViewController animated:YES];
    }];
}

大家会发现一个问题,跳转写在view里了。

大家都知道跳转的方法需要调用controller,在view里是没有的,需要去声明很不方便对不对,这时候你就需要router,各种跳随便跳,哈哈哈。让你的self-mannage更纯粹。

最后举个栗子 :大家的app里都有很多webview对不对,是不是一个webview声明了一个controller。其实不需要,只需要一个controller,把url传进去就重新打开一个webview就不需要那么多controller了,然后我们可以在里面把router应用进去。这样你就可以做到,webview的导航栏,是否需要返回,是否需要titler,是否需要传完整的url还是只需要传path,以及测试还是线上环境等都成为可配。这样是不是很爽,哈哈哈。让你的self-mannage更纯粹。

我这里也只是对这种 设计模式 的一个扩展,抛砖引玉一下,希望你也能爽。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Purely Functional Data Structures

Purely Functional Data Structures

Chris Okasaki / Cambridge University Press / 1999-6-13 / USD 49.99

Most books on data structures assume an imperative language such as C or C++. However, data structures for these languages do not always translate well to functional languages such as Standard ML, Ha......一起来看看 《Purely Functional Data Structures》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

MD5 加密
MD5 加密

MD5 加密工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具