Men的博客

欢迎光临!

0%

设计模式

设计原则

单一职责原则
开闭原则
接口隔离原则
依赖倒置原则
里氏替换原则
迪米特法则

内存设计

存储的Size
淘汰策略 LRU算法

磁盘设计

存储方式
大小限制
淘汰策略

网络设计

图片请求最大并发
请求超时策略
请求优先级

图片解码

对于不同格式的图片,解码采用什么方式
应用策略模式对不同图片格式进行解码
在那个阶段做图片解码处理

记录上传器

关于延时上传具体场景有哪些
前后台切换
从无网络到有网络的变化
通用轻量接口少捎带

MVVM框架思想

即模型-视图-视图模型
在MVVM的框架下视图和模型是不能直接通信的。它们通过ViewModel来通信,ViewModel通常要实现一个observer观察者,当数据发生变化,ViewModel能够监听到数据的这种变化,然后通知到对应的视图做自动更新,而当用户操作视图,ViewModel也能监听到视图的变化,然后通知数据做改动,这实际上就实现了数据的双向绑定。并且MVVM中的View 和 ViewModel可以互相通信。

ReactNative的数据流思想

Flux是Facebook用来构建用户端的web应用的应用程序体系架构。它通过利用数据的单向流动为React的可复用的视图组件提供了补充。相比于形式化的框架它更像是一个架构思想,不需要太多新的代码你就可以马上使用Flux构建你的应用。
一个 Flux 应用主要包含四个部分:
dispatcher
处理动作分发,维护 Store 之间的依赖关系

stores
数据和逻辑部分

views
React 组件,这一层可以看作 controller-views,作为视图同时响应用户交互

actions
提供给 dispatcher 传递数据给 store

系统UIView更新机制的思想

FaceBook的开源框架AsyncDisplayKit关于预排版的设计思想

https://blog.csdn.net/qq_36747738/article/details/106537874
AsyncDisplayKit

AsyncDisplayKit 是 Facebook 推出的用于保持界面流畅性的框架,其原理大致如下:

UI 线程中一旦出现繁重的任务就会导致界面卡顿,这类任务通常分为3类:排版,绘制,UI对象操作。

排版通常包括计算视图大小、计算文本高度、重新计算子式图的排版等操作。
绘制一般有文本绘制 (例如 CoreText)、图片绘制 (例如预先解压)、元素绘制 (Quartz)等操作。
UI对象操作通常包括 UIView/CALayer 等 UI 对象的创建、设置属性和销毁。

其中前两类操作可以通过各种方法扔到后台线程执行,而最后一类操作只能在主线程完成,并且有时后面的操作需要依赖前面操作的结果 (例如TextView创建时可能需要提前计算出文本的大小)。ASDK 所做的,就是尽量将能放入后台的任务放入后台,不能的则尽量推迟 (例如视图的创建、属性的调整)。

为此,ASDK 创建了一个名为 ASDisplayNode 的对象,并在内部封装了 UIView/CALayer,它具有和 UIView/CALayer 相似的属性,例如 frame、backgroundColor等。所有这些属性都可以在后台线程更改,开发者可以只通过 Node 来操作其内部的 UIView/CALayer,这样就可以将排版和绘制放入了后台线程。但是无论怎么操作,这些属性总需要在某个时刻同步到主线程的 UIView/CALayer 去。

ASDK 仿照 QuartzCore/UIKit 框架的模式,实现了一套类似的界面更新的机制:即在主线程的 RunLoop 中添加一个 Observer,监听了 kCFRunLoopBeforeWaiting 和 kCFRunLoopExit 事件,在收到回调时,遍历所有之前放入队列的待处理的任务,然后一一执行。