背景概述:在每个项目中都会使用到对应的分享功能,分享到不同的平台,通过不同的方式进行分享。
本文主要想表述的是一个有关设计的思考:
设计思路上图为一个简单的设计思路,简单的来说,基本都是通过一个单例类来进行类的管理的,单例类中又管理了各个平台的分享(baseplatform). 其中shareInfo类为一个分享的数据类,其中大体就是一些标题、分享的内容,分享的链接和分享的图标还有一个分享的类型。单例类初始化的时候就进行各个平台的注册。
通过share方法中的type来区分分享到对应的哪些平台,比如:QQ、微信和微博。
建立一个接口类来统一一下方法,接口有一个好处,就是只要实现了这个接口的类都可以调用到接口中的方法,这样在平台初始化的时候可以真正的做到动态。初始化类中仅管理两个方法:1 发送分享 2 接收回调
在改设计中有一个平台基类(basePlatform),该基类的作用是统一初始化方法和一些参数和回调信息。
如上的设计遇到了一些问题:
1 是否有必要为平台创建一个基类?
其实是没有必要的,因为只要实现了对应的接口就能调用接口中的方法。当然写一个基类也有好处,至少把所有的分享平台统一起来,更易于理解。
2 hanleOpenURL的调用时机?
hanleOpenURL是分享平台回调当前应用的一个调起方法,是在AppDelegate中来进行调用的,这个地方需要通过Manager存储对应的平台,在调用appdelegate中的回调的时候调用Manager中的同名方法,然后由各个平台自己实现自己的hanleOpenURL方法。这样也做到了分平台管理.
项目的git链接地址:https://github.com/IRISZL/IRISShare
网友评论