- 博客(70)
- 资源 (2)
- 收藏
- 关注
原创 23种设计模式之代理模式
代理模式也称为委托模式,是结构型设计模式中非常重要的模式,也是非常普遍的一个模式,在生活中肯定遇到过老板拖欠工资的情况,这时候,就需要走仲裁。走仲裁需要委托一个律师来代替我们去提请诉讼等事情,这个律师就是我们的代理。在生活中这样的例子很多,咱们言归正传,接着说代理模式。代理模式的定义 为其他对象提供一种代理以控制对这个对象的访问。代理模式的使用场景 当无法或者不想直接访问某个对象或者访问某个对
2017-06-13 15:22:24
459
原创 kotlin基本语法
空安全 主要参考:https://www.gitbook.com/book/huanglizhuo/kotlin-in-chinese/details 这本书,大神们也可也自行前往阅读,这篇文章主要是对一些不起眼的知识点进行了梳理和总结,让大家对kotlin的了解更进一步。有很多人说资料太少了,这里我拿了鸿洋大神整理出来的一些别人分享的东西,地址连接http://blog.csdn.net/si
2017-06-12 18:20:56
1109
原创 23种设计模式之中介者模式
中介者模式也称为调解者模式或者调停者模式,日常生活中很多调停者角色,最常见的就是房屋中介。在外地工作的估计对这个深有体会。只要在外面租房子就难免碰见黑中介,大家时刻要小心谨慎,不要贪图小便宜吃大亏。好了,言归正传,咱们说说中介者模式。中介者模式定义 中介者模式包装了一些列对象相互作用的方式,使得这些对象不必相互明显作用。从而使他们可以松散耦合。而且可以独立地改变它们之间的交互。中介者模式的使用场
2017-06-12 15:22:13
413
原创 23种设计模式之访问者模式
访问者模式是一种将数据操作与数据结构分离的设计模式,它是23种设计模式中最复杂的一个,但是使用频率并不高访问者模式的定义 封装一些作用于某种数据结构中的各元素的操作,它可以在不改变这个数据结构的前提下定义作用于这些元素的新的操作。使用场景 a. 对象结构比较稳定,但经常需要在此对象结构上定义新的操作 b. 需要对一个对象结构中的对象进行很多不同的并且不相关的操作,而需要避免这些操作“污染”这
2017-06-09 16:34:50
487
原创 23种设计模式之模板方法模式
在面向对象开发过程中,通常会遇到这样的一个问题,我们知道一个算法所需的关键步骤,并确定了这些步骤的执行顺序,但是,某些步骤的具体实现是未知的,或者说某些步骤的实现是会随着环境的变化而变化的。模板方法模式的定义 定义一个操作中的算法的框架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。模板方式的使用场景 a. 多个子类有公有的方法,并且逻辑基本相同时。
2017-06-07 16:55:32
465
原创 Kotlin基本语法
流程控制 主要参考:https://www.gitbook.com/book/huanglizhuo/kotlin-in-chinese/details 这本书,大神们也可也自行前往阅读,这篇文章主要是对一些不起眼的知识点进行了梳理和总结,让大家对kotlin的了解更进一步。有很多人说资料太少了,这里我拿了鸿洋大神整理出来的一些别人分享的东西,地址连接http://blog.csdn.net/s
2017-06-07 12:32:41
1674
原创 23种设计模式之迭代器模式
迭代器模式又称为游标模式,是行为型设计模式之一。 如果要问Java中使用最多的一种模式,答案不是单例模式,也不是工厂模式,更不是策略模式,而是迭代器模式,先来看一段代码吧: public static void print(Collection coll){ Iterator it = coll.iterator(); while(it.hasNext
2017-06-07 09:52:54
441
原创 Kotlin基本语法
基本类型 主要参考:https://www.gitbook.com/book/huanglizhuo/kotlin-in-chinese/details 这本书,大神们也可也自行前往阅读,这篇文章主要是对一些不起眼的知识点进行了梳理和总结,让大家对kotlin的了解更进一步。有很多人说资料太少了,这里我拿了鸿洋大神整理出来的一些别人分享的东西,地址连接http://blog.csdn.net/s
2017-06-06 15:05:36
3639
原创 23种设计模式之备忘录模式
备忘录模式是一种行为模式,该模式用于保存对象当前状态,并且在之后可以再次恢复到此状态备忘录模式的定义 在不破坏封闭的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样,以后就可将该对象恢复到原先保存的状态。备忘录模式的使用场景 a.需要保存一个对象在某一个时刻的状态或部分状态 b.如果用一个借口来让其他对象得到这些状态,将会暴露对象的实现细节并破坏对象的封装性,一个对象不希望外
2017-06-05 18:15:01
388
原创 Kotlin基本语法
主要参考:https://www.gitbook.com/book/huanglizhuo/kotlin-in-chinese/details 这本书,大神们也可也自行前往阅读,这篇文章主要是对一些不起眼的知识点进行了梳理和总结,让大家对kotlin的了解更进一步。有很多人说资料太少了,这里我拿了鸿洋大神整理出来的一些别人分享的东西,地址连接http://blog.csdn.net/sinat_36
2017-06-05 10:45:54
1065
原创 Kotlin基本语法
1.定义包名 在源文件的开头定义包名:package foo.barimport java.util.*fun bza() {}class Goo {}//...kotlin源文件不需要和文件夹路径一致:源文件可以放在任何文件目录。 源文件的所有内容(比如类和函数)都被包声明包括。因此在上面的例子中, bza() 的全名应该是 foo.bar.bza ,Goo 的全名是 foo.bar.Go
2017-06-02 18:11:46
2174
原创 23种设计模式之观察者模式
观察者模式是一个使用率非常高的模式,它最常用的地方是GUI系统、订阅—发布系统。因为这个模式的一个重要作用就是解耦,将被观察者和观察者解耦,使得他们之间的依赖性更小,甚至做到毫无依赖。观察者模式的定义 定义对象间一种一对多的依赖关系,使得每当一个对象改变状态,则所以依赖于它的对象都会得到通知并被自动更新。观察者模式的使用场景关联行为场景,需要注意的是,关联行为是可拆分的,而不是“组合”关系事
2017-06-02 16:05:14
368
原创 23种设计模式之命令模式
命令模式是行为型设计模式之一。命令模式相对于其他的设计模式来说并没有那么多的条条框框,其实它不是一个很“规矩”的设计模式,就是因为这一点,命令模式相对于其他的设计模式更为灵活多变。命令模式的定义 将一个请求封装成一个对象,从而让用户使用不同的请求把客户端参数化;对请求排队或者记录请求日志,以及支持可撤销的操作。命令模式的使用场景 需要抽象出待执行的动作,然后以参数的形式提供出来—类似于过程设计
2017-06-02 09:33:10
347
原创 23种设计模式之解释器模式
解释器模式(Interpreter Paattern)是一种比较少见的行为型模式,其提供了一种解释语言的语法或表达式,该模式定义了一个表达式接口,通过该接口解释一个特定的上下文。在这么多设计模式中,解释器模式在实际运用上相对来说要少很多,因为我们很少会自己去构造一个语言的文法。定义 给定一个语言,定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中的句子。ps:这里看不懂也没
2017-05-31 18:30:45
391
原创 23种设计模式之责任链模式
责任链模式(Iterator Pattern),是行为型设计模式之一,责任链模式是一种对象的行为模式。在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织和分配责任。责任链模式的定义 使多个对象都有机会处理请求
2017-05-24 18:18:25
398
原创 23种设计模式之状态模式
上一篇讲到策略模式,是用来分离算法,在相同的行为抽象下有不同的具体实现策略。这次要说的就是和策略模式很像的状态模式。状态模式中的行为是由状态来决定的,不同的状态下有不同的行为。状态模式和策略模式的结构几乎完全一样,但是他们的目的,本质却完全不同。状态模式的行为是平行的,不可替换的,策略模式的行为是彼此独立、可相互替换的。用一句话来概括,状态模式把对象的行为包装在不同的状态对象里,每一个状态对象都有一
2017-05-23 18:21:56
430
原创 Kotlin在android studio下的初次使用
一觉醒来,发现微信群和qq群里不再是各种斗图了,而是谷歌在今日举行的I/O开发者大会上宣布,将Kotlin语言作为安卓开发的一级编程语言。Kotlin由JetBrains公司开发,与Java 100%互通,并具备诸多Java尚不支持的新特性。。那么你知道Kotlin是什么吗?如果还不知道那就赶紧自行百度一下。 好了咱们言归正传,首先看下Kotlin的基本语法片段:fun main(args: Ar
2017-05-19 15:13:38
8104
原创 23种设计模式之策略模式
策略模式的定义: 策略模式定义了一系列的算法,并将每一个算法封装起来,而且使他们还可以相互替换,策略模式让算法独立于使用它的客户端而独立变化。 策略模式的使用场景:针对同一类型问题的多种处理方式,仅仅是具体行为有差别时需要安全地封装多种同一类型的操作时出现同一抽象类有多个子类,而又需要使用if-else或者 switch-case 来选择具体子类时类图: Context:用来操作策略的上
2017-05-19 12:11:57
419
原创 23种设计模式之抽象工厂模式
定义:为创建一组相关或者是相互依赖的对象提供接口,而不需要指定它们的具体类 使用场景:一个对象族有相同的约束时可以使用抽象工厂模式。 类图: 抽象工厂模式与工厂方法模式的区别: 抽象工厂模式是工厂方法模式的升级版本,他用来创建一组相关或者相互依赖的对象。他与工厂方法模式的区别就在于,工厂方法模式针对的是一个产品等级结构;而抽象工厂模式则是针对的多个产品等级结构。在编程中,通常一个产品结构
2017-05-16 17:07:51
324
原创 23种设计模式之工厂方法模式
定义: 定义一个用于创建对象的接口,让子类决定实例化那个类 使用场景: 在任何需要生成复杂对象的地方,都可以使用工厂方法模式,复杂对象适合使用工厂模式,用new就可以完成创建的对象无需使用工厂模式。/** * Created by jmfstart on 2017/5/12. * 抽象产品类 */public abstract class Product { //产品类的抽象方
2017-05-13 15:29:24
366
原创 23种设计模式之原型模式
定义:用原型实例指定创建对象的种类,并通过拷贝这些原型创新的对象 类图: Client:客户端用户Prototype:抽象类或者接口,声明具备clone能力ConcretePrototype:具体的原型类使用场景:类初始化需要消化非常多的资源,这个资源包括数据,硬件资源等,通过原型拷贝避免这些消耗。通过new产生一个对象需要非常繁琐的数据准备或访问权限一个对象需要提供给其他对象
2017-05-12 11:02:52
363
原创 23种设计模式之Builder模式
Builder定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 Builder使用场景:相同的方法,不同的执行顺序,产生不同的事件结果时多个部件或零件,都可以装配到一个对象中,但是产生的运行结果又不相同时产品类非常复杂,或者产品类中的调用顺序不同产生了不同的作用,这个时候使用建造者模式非常合适当初始化一个对象特别复杂,如参数多,且很多参数都具备默认值时 B
2017-05-08 18:12:06
1156
原创 23种设计模式之单例模式
应用最广的模式—单例模式(Singleton)定义:确保一个类中只有一个实例,而且自行实例化并向整个系统提供这个实例。或者说某种类型的对象有且只有一个。 实现单例模式主要有以下几个关键点:构造函数不对外开放,一般为Private通过一个静态方法或者枚举返回单例类对象确保单例类的对象有且只有一个,尤其是在多线程环境下确保单例类对象在反序列化时不会被重新构建对象。单例的实现方式有多重:饿汉式
2017-05-05 16:56:19
706
原创 面向对象编程思想的六大原则
面向对象的六大原则1.单一职责原则 单一职责原则英文全称:Single Responsibility Principle 简称SRP 定义:就一个类而言,应该仅有一个引起它变化的原因。简单来说,其实就是一个类只负责一个工作。就和流水线上的员工一样,每个人只负责一个工作。 注意:单一职责的划分界限并不是总是那么清晰,很多时候都是需要靠个人经验来界定的。 2.开闭原则 开闭原则英文全称:Ope
2017-05-04 16:21:03
2655
原创 仿ios,网易,京东的搜索界面和功能
由于最新项目需要实现一个搜索功能,需求是和ios的样式相同,ios有第三方库直接引用就可以使用,而android这边全是md风格的,并不是我想要的,所以只能自己写了,如果有时间一定封装成库。首先看下效果图 首先看下需要用到的东西,1,首页搜索是一个TextView自不必说,主要是热门搜索的流式布局,但是今天的主角不是它,如果不太懂的朋友可以移步这里:[Android中常见的流式布局的使用
2017-04-26 16:14:26
4937
原创 Android下载完成更新后,没有打开安装成功界面,出现闪退问题
最开始以为是android7.0权限问题,后来发现在6.0手机上也是会出现这种问题的 这是修改之前的代码:Intent intent = new Intent(Intent.ACTION_VIEW); intent.setDataAndType(Uri.parse("file://xxxx.apk"), "application/vnd.android.package-archive");
2017-04-15 17:01:51
5155
1
原创 字体随着ProgressBar的加载而滚动
在网上翻阅了很多关于ProgressBar滚动效果,但是始终没有找到适合项目中的这种效果,故自己写篇博文,记录一下写作过程,给大家做一个参考。先看下最终效果效果图 我这里用的是LICEcap软件录制的gif图,效果有点掉帧,哪位仁兄有比较好的录制gif的软件烦请相告,小弟在此先行谢过。首先看下xml代码,只有两个系统控件,一个TextView和一个ProgressBar,Button只是为了方便
2017-02-25 16:02:16
2748
原创 随机飞入效果的实现
Android中随机飞入飞出效果的实现 最近在看一些随机飞出的效果的东西,现在觉得网上的一些帖子有的写的不是很全,有的没有说明情景,用起来很费劲而且并不能很好的理解。自己写的话确实很费劲,而且不好理解。我最近集成了一下这个效果,抽取了必要的代码,需要的可以直接使用。什么都不说了,老规矩先上图给大家看一下。 1 功能清单文件中<?xml version="1.0" encoding="
2016-11-17 15:52:58
1427
原创 Android中常见的流式布局的使用
Android中常见的自定义FlowLayout流式布局的使用 在日常的app使用中,我们会在Android 的app中看见,比如淘宝购物页面尺寸的选取,脉脉和慕课技术职位的选取等等热门标签自动换行的流式布局,今天,我们就来看看如何自定义一个类似热门标签那样的流式布局吧,老规矩,直接上效果图概述1.流式布局原理:在布局内,随意摆放任意个view,每行所摆放的view个数,根据实施计算出来的宽度
2016-11-17 11:48:14
3197
1
原创 Android_数据存储
数据存储Android数据存储方式SharedPrefernces存储手机内部文件存储手机外部文件存储Sqlite数据库存储远程服务器存储SharedPreferences存储SP存储专门用来存储一些单一的小数据存储数据的类型: boolean, float, int, long, String数据保存的路径: /data/data/packageName/shared_pre
2016-11-10 11:53:02
429
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人