2020-04-13

一、String,StringBuffer,和StringBuilder区别

String字符常量,每次修改都相当于生成一个新对象,不适应经常变更值的场景

StringBuffer字符变量,线程安全,适用于多线程,效率略低于StringBuilder

StringBuilder字符变量,线程不安全,适用于单线程,效率略高于StringBuffer

效率 StringBuilder > StringBuffer > String

二、arraylist和linkedlist区别

ArrayList内部是使用可増长数组实现的,所以是用get和set方法是花费常数时间的,但是如果插入元素和删除元素,除非插入和删除的位置都在表末尾,否则代码开销会很大,因为里面需要数组的移动。

LinkedList是使用双链表实现的,所以get会非常消耗资源,除非位置离头部很近。但是插入和删除元素花费常数时间

三、MVP架构


2020-04-13_第1张图片

Model:实体层,用于实现具体的复杂的逻辑。

View:视图层,用于展示数据、与用户交互等

Presenter:逻辑控制层,用于持有Model和View的实例。

特点:view层和model层完全隔离,presenter持有Model和View,在View中使用presenter实现功能

优点:释放activity功能,完全充当View的角色,解耦合,换UI时方便,结构更清晰,责任更明确,便于维护

缺点:1、类和接口过多,解决办法:写一个Contract接口,然后把与Mvp三层相关接口都写进去。

2、容易造成内存泄漏,presenter持有View,activity关闭时presenter在执行耗时操作时容易造成view无法回收,造成内存泄漏。解决办法:ondestroy时回收presenter,或者使用弱引用。

你可能感兴趣的:(2020-04-13)