你實現(xiàn)過一個框架或者庫以供別人使用么?如果有,請談一談構(gòu)建框架或者庫時候的經(jīng)驗;如果沒有,請設(shè)想和設(shè)計框架的public的API,并指出大概需要如何做、需要注意一些什么方面,來使別人容易地使用你的框架
抽象和封裝,方便使用。首先是對問題有充分的了解,比如構(gòu)建一個文件解壓壓縮框架,從使用者的角度出發(fā),只需關(guān)注發(fā)送給框架一個解壓請求,框架完成復(fù)雜文件的解壓操作,并且在適當?shù)臅r候通知給是哦難過者,如解壓完成、解壓出錯等。在框架內(nèi)部去構(gòu)建對象的關(guān)系,通過抽象讓其更為健壯、便于更改。其次是API的說明文檔。
設(shè)計一個progress bar解決方案,追問到 Core Graphic、CGPath、maskLayer。
設(shè)計一個popup view被追問到 keyWindow、UIWindow的layer、UIView hierarchy。
從設(shè)計模式的角度分析Delegate、Notification、KVO的區(qū)別。被追問到自己寫的library和開源的項目中用到哪些設(shè)計模式,為什么使用,有哪些好處和壞處,現(xiàn)在能否改進。
架構(gòu)設(shè)計:
1.提供類工廠方法快速創(chuàng)建對象(完成對對象控件分配和初始化配置,特別是生成控件的API,全部是擴展的類方法)
2.單例模式(將用戶數(shù)據(jù)管理封裝成一個單例類,因此用戶的信息需要全局使用)
3.觀察者模式(KVO和Notification的具體使用,跨模塊的類交互)
4.MVC