浅谈网络层设计(XXHNetwork封装缓存、日志输出、参数,返

2019-10-15  本文已影响0人  懂得_sniper

一、如何设计(个人浅谈)

二、模式缺陷

1.block形式的缺陷

2.block形式的优点

3.delegate形式的优点

3.delegate形式的缺点

三、个人方案

1.业务分析

2.问题处理 - XXHNetwork

四、XXHNetwork封装缓存、日志输出、参数,返回数据拦截控制

1.数据缓存

XXHNetwork提供了独立的缓存模块(XHNetworkCacheManager)该模块底层运用的是YYCache,因为YYCache LRU算法比较符合我们现实的使用场景,当然我们系统提供的NSCache也是ok的,看个人喜好吧。缓存模块提供下面功能

2.日志输出

日志输出由独立的模块XHNetworkLogManager控制,里面提供各种情况(成功、失败)下日志输出接口,只需要调用初始化方法传入相应数据即可!

3.底层接口分离

4.上层接口

5.使用

XHNetworkBlockManager.shared.request(Method: XHNetworkRequestType.get, APIString: "", Parameters: params, SuccessBlock: { (successResponse) in
            print("--------------方式一(block形式)请求数据成功----------")
            self.testManager.loadData()
        }) { (failureResponse) in
            print("--------------方式一请求数据失败----------")
        }
//代理方式调用
self.testManager.loadData()

3.在具体业务中创建一个中间管理类的对象testManager
然后在业务接着完成剩余代理的实现

lazy var testManager:XHNetworkTestManager = {
        
        let testManager = XHNetworkTestManager()
        testManager.callBackDelagate = self
        testManager.paramSourceDelegate = self
        return testManager
    }()
//参数代理,在这里传送请求参数
    func configeApiParams(Manager manager: XHNetworkDelegateManager) -> [String : Any]? {
        
        let dic = [String : Any]()
        return dic
    }
    //返回数据代理
    func requesApiSuccess(Manager manager: XHNetworkDelegateManager) {
        print("--------------方式二(delegate形式)请求数据成功----------")
    }
    
    func requesApiFailure(Manager manager: XHNetworkDelegateManager) {
        print("--------------方式二请求数据失败----------")
    }

源码地址请点击这里,欢迎大神指导,若考虑不周的地方,请大家多提意见!如果喜欢或者对您有帮助,希望能给个小星星,多谢!

上一篇下一篇

猜你喜欢

热点阅读