自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 资源 (1)
  • 收藏
  • 关注

原创 Android MVP应用架构模式

1.MVP模式介绍MVP 全称 Model View Presenter ,是MVC模式的一个演化版本。MVP模式能够有效的降低View的复杂性,避免业务逻辑被塞进View中,使View变的混乱臃肿,同时会解除View和Model的耦合,具有较好的拓展性、灵活性。可能对于简单的应用来说MVP稍微麻烦点,各种各样的接口,但是对于比较复杂的应用,能够非常好的组织应用结构,使应用变得灵活。M...

2018-11-23 15:32:45 200

原创 设计模式 --- 桥接模式

1.定义将抽象部分与现实部分分离,使他们可以独立进行变化。 2.使用场景任何多维度类或者多个树形类之间的耦合,都可以用桥接模式解耦。一个系统需要在构件的抽象化角色和具体化角色之中增加更多的灵活性,避免在两个层次之间建立静态的继承关系,可以通过桥接模式使他们在抽象层建立一个关联。对不希望使用继承或者因为多层次继承导致系统类个数急剧增加的子系统,可以考虑桥接模式。一个类存在...

2018-11-22 16:14:19 186

原创 设计模式 --- 外观模式

1.定义要求一个子系统的外部与内部通信必须通过一个统一的对象进行。 2.使用场景1。为一个复杂子系统提供一个简单接口。2。当需要构建一个层次子系统的时候,使用外观模式定义子系统中每层的入口点。 3.简单实现以手机为例,手机包含了电话、短信、拍照、GPS等诸多功能。手机就是就是一个统一的入口。//定义手机功能interface Phone{ //打电话...

2018-11-22 15:43:53 144

原创 设计模式 -- 享元模式

1.定义使用共享对象可以有效地支持大量的细粒度的对象。 2.使用场景1)系统中存在大量的相似对象2)细粒度的对象都具备较接近的外部状态,而且内部状态与环境无关,也就是内部对象没有特定的状态。3)需要缓冲池 3.简单实现以买火车票刷票为例,如果每次发起一次查询请求,服务器就要创建一个查询的车票结果,必然会造成大量的重复对象的创建,使GC任务繁重,内存占用高,我们可...

2018-11-22 15:21:38 135

原创 设计模式 --- 装饰器模式

1.定义动态地给一个对象添加一些额外的职责。就增加功能来说,装饰模式生成子类更为灵活。 2.使用场景需要透明且动态拓展类的功能。 3.简单实现以人穿不同的衣服的行为为例子//定义一个人抽象类abstract class Person{ //穿衣 abstract void dressed();}//具体的人 被装饰的对象class Boy...

2018-11-22 14:48:13 101 1

原创 设计模式 --- 适配器模式

1.定义适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。 2.使用场景1.系统需要使用现有的类,而此类的接口不符合系统的要求,即接口不兼容。2.想要建立一个可以重复使用的类,用于与一些彼此之间没有太大关联的一些类,包括一些可能在将来引进的类一起工作。3.需要一个统一的输出接口,而输入端的类型不可预知。...

2018-11-21 17:59:49 117

原创 设计模式 --- 组合模式

1.定义将对象组合成树形结构以表示“部分-整体”的层次结构,使得用户对单个对象和组合对象的使用具有一致性。 2.使用场景表示对象的整体-部分层次结构时从一个整体能够独立出部分模块或功能的场景 3.简单实现以操作系统的文件系统为例。//抽象文件和文件夹abstract class Dir{ //存储文件夹下的所有文件 List<Dir&g...

2018-11-21 17:12:33 189

原创 设计模式 --- 代理模式

1.定义为其他对象提供一种代理以控制这个对象的访问。 2.使用场景当无法或不想直接访问某个对象或访问某个对象存在困难时,可以时通过一个代理对象来间接访问,为了保证客户端使用的透明性,委托对象与代理对象需要实现相同的接口。 3.简单实现小明通过以法律途径解决老板拖欠工资问题,小明需要请一位代理律师来作为自己的代理诉讼人。静态代理模式:代理者的代码是程序员自己或通过自动...

2018-11-21 16:19:09 101

原创 设计模式 --- 中介者模式

1.定义中介者模式包装了一系列对象相互作用方式,使得这些对象不必相互明显作用。从而使他们可以松耦合。当某些对象之间作用发生改变的时候,不会立即影响其他的一些对象之间的作用。保证这些作用可以彼此独立变化。中介者模式将多对多的相互作用转化为一对多的相互作用。中介者模式将对象的行为和协作抽象化,把对象在小尺度的行为上与其他对象的相互作用分开处理。 2.使用场景当对象之间的交互操作很多且每...

2018-11-21 15:04:09 95

原创 设计模式 --- 访问者模式

1.定义封装一些作用于某种数据结构中的各个元素的操作,它可以在不改变这个数据结构的前提下定义作用于这些元素的新操作。 2.使用场景1.对象结构比较稳定,但经常需要在此对象结构上定义新的操作。2.需要一个对象结构中的对象进行很多不同的并且不相关的操作,而需要避免这些操作污染这些对象类,也不希望在增加新操作时修改这些类。 3.简单实现公司对员工需要绩效考核,简单的把员工...

2018-11-21 11:44:18 93

原创 设计模式 --- 模版方法模式

1.定义定义一个操作中的算法框架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 2.使用场景1。多个子类公有的方法并且逻辑相同2。重要、复杂的算法,可以把核心算法设计为模版,周边的相关细节功能则由各个子类实现。3。重构时,模版方法模式是常用的模式,把相同的代码抽取到父类中,然后通过钩子函数约束行为。 3.简单实现模版...

2018-11-21 10:50:54 118

原创 设计模式 --- 迭代器模式

1.定义提供一种方法顺序访问一个容器对象中的各个元素,而又不需要暴露该对象的内部表示。 2.使用场景遍历一个容器对象 3.简单实现大部分容器类都有提供迭代方法 不需要我们自己实现,这里实现一个通用代码。//迭代器接口interface Iterator<T>{ //是否还有下一个元素 true表示有 false表示没有 boolean...

2018-11-21 10:11:21 154

原创 设计模式 --- 备忘录模式

1.定义在不破坏封闭的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样以后就可将对象恢复到原先保存的状态。 2.使用场景1)需要保存一个对象在某一个时刻的状态或部分状态2)如果用一个接口来让其他对象得到这些状态,将会暴露对象的实现细节并破坏对象的封装性,一个对象不希望外界直接访问内部状态,通过中间对象可以间接访问其内部对象。 3.简单实现模拟一个游戏...

2018-11-20 16:52:25 105

原创 设计模式 --- 观察者模式

1.定义定义对象间一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并被自动更新。 2.使用场景1)关联行为场景,注意关联行为是可拆分的,而不是"组合"关系。2)事件多级触发场景。3)跨系统的消息交换场景,如队列消息、事件总线程处理机制。 3.简单实现模拟一个发布--订阅邮件//定义一个观察者class User imple...

2018-11-20 16:00:12 104

原创 设计模式 --- 命令模式

1.定义将一个请求封装成一个对象,从而让用户使用不同的请求把客户端参数化;对请求排队或者记录请求日志,以及支持可撤销的操作。 2.使用场景需要抽象出待执行的动作,然后以参数的形式提供出来,类似于过程设计中的回调机制。在不同的时刻指定、排列和执行请求。需要支持取消操作。支持修改日志功能。需要支持事物操作。 3.简单实现以一个电视遥控器功能为例,遥控器能控制...

2018-11-20 14:56:12 114

原创 设计模式 --- 解释器模式

1.定义给定一个语言,定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中的句子。文法:假设有如下ab开头ef结尾中间排列N(N>= 0)个cd的字符串:|  abcd...... cdef随着N的值具体的字符串也不同,假如定义一个符号S,从符号S出发推导出上述字符串,那么推导式:| S ::= abA*ef| A ::= cd其中符号" ...

2018-11-20 13:42:32 121

原创 设计模式 --- 责任链模式

1.定义使多个对象都有机会处理请求,从而避免了请求的发送者和接受者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,只到有对象处理它为止。 2.使用场景多个对象可以处理同一请求,但具体由哪个对象处理则在运行时动态决定。在请求处理者不明确的情况下向多个对象中的一个提交一个请求。需要动态指定一组对象处理请求。 3.简单实现以一个费用报销为例。组长只能审批...

2018-11-19 16:44:11 98

原创 设计模式 --- 状态模式

1.定义当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。状态模式把对象的行为包装在不同的状态对象里,每一个状态对象都有一个共同抽象状态基类。状态模式的意图是让一个对象在其内部状态改变的时候其行为也随之改变。 2.使用场景1)一个对象的行为取决于它的状态,并且它必须在运行时根据状态改变它的行为。2)代码中包含大量与对象状态有关的条件语句,例如一个操作中...

2018-11-19 15:58:47 101

原创 设计模式 --- 策略模式

1.定义策略模式定义了一系列算法,并将每个算法封装起来,而且使他们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。 2.使用场景1) 针对同一类型问题的多种处理方式,仅仅是具体行为有差别。2) 需要安全地封装多种同一类型的操作时。3) 出现同一抽象类有多个子类,又需要使用 if..elss 或者 switch...case  来选择具体子类。 3.简单实...

2018-11-19 14:58:16 86

原创 设计模式 --- 抽象工厂模式

1.定义为创建一组相关或者相互依赖的对象提供一个接口,而不需要指定他们的具体类。 2.使用场景一个对象族有相同的约束时可以使用抽象工厂模式。例如之前工厂方法模式的汽车组装例子,Q3、Q5、Q7都是同一个车系,但是零部件差别很大,Q3发动机是国产的而Q7是原装进口的,Q3的轮胎是普通轮胎,Q7是全尺寸越野轮胎等等。 3.简单实现还是以汽车生产为例,Q3、Q7都是同一系列车...

2018-11-19 12:07:18 96

原创 设计模式 --- 工厂方法模式

1.定义一定一个创建对象的接口,让子类决定实例化哪个类。 2.使用场景在任何需要生成复杂对象的地方,都可以使用工厂方法模式。 3.简单实现以一个汽车组装为例,汽车厂主要以组装一款SUV车型,比如Q3、Q5、Q7,对于这类车型内部差异并不大,除了基本功能以外,还提供了自动巡航,无人驾驶之类的功能。//产品的抽象类abstract class Car{ /...

2018-11-19 10:58:26 147 1

原创 设计模式 --- 原型模式

1.定义用原型实例创建指定对象的种类,并通过复制这些原型创建新对象。 2.使用场景a.类初始化需要消耗非常多的资源,包括数据资源、硬件资源,通过原型复制,避免这种资源消耗。b.通过new产生一个对象需要非常繁琐的数据准备或访问权限。c.一个对象需要提供给其他对象访问,而且各个调用者都需要修改其值时,可以考虑复制多个对象供调用者使用,实现保护性拷贝。 3.简单实现...

2018-11-16 17:17:57 87

原创 设计模式 --- Builder模式

1.定义将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 2.使用场景1.相同的方法,不同的执行顺序,产生不同的结果。2.多个部分都可以装配到一个对象中,但产生的结果又不相同。3.产品类非常复杂,或者产品类的调用顺序不同产生了不同的作用。4.初始化一个对象特别复杂,参数多,且很多参数具有默认值。 3.简单实现将计算机的组装简化为构建...

2018-11-16 15:39:11 92

原创 设计模式 --- 单例模式

1.定义确保一个类只有一个 实例,自己实例化并向整个系统提供这个实例。关键点:a.构造函数不对外开放,一般为Private;b.通过一个静态方法或者枚举返回单例类对象;c.确保单例类对象有且只有一个,尤其是多线程环境下;d.确保单例类对象反序列化不会重新构建对象。 2.使用场景避免产生多个对象消耗过多资源,如要访问IO和数据库资源,或某种类型对象有且只有一个。...

2018-11-16 14:26:08 76

原创 Mac环境下Android Studio移植FFmpeg

准备:1. Android Studio2. FFmpeg-2.8.4  3. android-ndk-r10e一、ndk编译ffmpeg1.下载ffmpeg和ndkffmpeg下载地址:http://ffmpeg.org/download.html  我下载的是2.8.4版本ndk 官网下载,这个我就不说了,自备梯子翻越长城。。我下载的是 android-nd

2015-12-31 16:19:16 3172 2

原创 Mac环境下使用android studio jni基础

1.下载ndk首先需要去官网下载ndk,我下载的是android-ndk-r10e . 2.新建android studio项目新建一个android studio项目,打开Project Structure,在android ndk location中选择ndk的目录。添加完成之后将会在local.properties配置中自动添加一条ndk的路径nd

2015-12-31 10:39:12 1270

原创 Mac环境下Android Studio jni开发调用 javah编译不了头文件问题

最近在弄JNI的东西,网上的资料不少,可是按着一步一步来出现了许多问题,在Android Studio中用javah -classpath 编译头文件总是报错bash: ../../build/intermediates/classes/debug: is a directory找了半天资料,原来在mac环境下多条路径之间用“ :”(冒号)分割,“ ;”(分号)是windows环境下的

2015-12-30 17:51:46 1503

原创 Android ListView 滑动分页

主要用ViewPager + ListView 实现,实现思路:ViewPager实现横向分页,在每个页面动态添加固定条目的ListView,(有人会说直接用布局写页面,可是如果每个Item相同且有五六个,适配器绑定数据源就会变得很麻烦)效果已经实现,但个人觉得这个办法还是比较笨的,本人还是菜鸟,希望大神指点。 我用的是 GitHub 上大神写自定义ViewPager(https://gi

2014-03-10 13:55:54 890

ListView水平滑动分页

ListView水平滑动分页,更改属性也可垂直滑动分页,但滑动事件有所冲突

2014-03-10

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除