自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

sp不会玩ps

开始的一小步是终点的一大步。

  • 博客(41)
  • 收藏
  • 关注

原创 二十三、 桥接设计模式

1. 桥接设计模式介绍在软件系统中,某些类型由于自身的逻辑,它具有两个或多个维度的变化,可以采用桥接模式来应对这种“多维度变化”。定义将抽象部分与实现部分分离,使它们可以独立地进行变化。2. 桥接设计模式使用场景如果一个系统需要在构建的抽象化角色和具体角色之间增加更多的灵活性,避免在两个层次之间建立静态的联系。一个类存在两个独立变化的维度,并且这两个维度都需进行扩展。3. 桥接设计模式UML类

2016-05-10 14:11:26 1232

原创 二十二、外观设计模式

1. 外观设计模式介绍显示生活中有一个种电视万能遥控器,只要和电视配对好了以后,就可以正常使用,不同型号的电视,只要一旦适配,所有的操作模式一模一样。这就是一种外观适配模式。表面上都是同一个遥控器,实际上不同型号的电视,不同的操作,发出的型号可能各不相同。但是对于用户来说,没有任何差别。定义要求一个子系统的外部和其内部的通信必须通过一个统一的对象进行。门面模式提供一个高层次的接口,使得子系统更易使用

2016-05-09 20:33:49 1510

原创 二十一、享元设计模式

1. 享元设计模式介绍享元模式用来尽可能减少内存使用量,它适合用于可能存在大量重复对象的场景,用来缓存可共享的对象,达到对象共享、避免创建过多对象的效果。定义:使用共享对象可有效地支持大量的细粒度对象。2. 享元设计模式使用场景如果一个系统中存在大量的相同或者相似的对象,由于这类对象的大量使用,会造成系统内存的消耗,可以使用享元模式来减少系统中对象的数量。对象的大部分状态都可以外部化,可这些外部

2016-05-09 20:25:17 1646

原创 二十、装饰设计模式

1. 装饰设计模式介绍定义动态地给一个对象添加一些额外的职责。就增加功能来说,装饰模式相比生成子类更为灵活。2. 装饰设计模式使用场景动态地给一个对象添加一些额外的职责。3. 装饰设计模式UML类图角色介绍:Component:抽象组件,充当的是被装饰的原始对象。ConcreteComponent:组件具体实现类。Decotor:抽象装饰类:职责就是为了装饰组件对象,内部有一个指向组件对象的引

2016-05-08 22:25:29 1539

原创 十九、适配器设计模式

1. 适配器模式介绍我们在日常生活中,会经常接触到设配器模式,比如我们的充电器,不同的手机接口类型可能不一样,这个时候只要一个转接口,就可以解决我们的问题。这个转接口就是我们的适配器。定义适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起的两个类能够在一起工作。2. 适配器模式的使用场景系统需要使用现有的类,而此类的接口不符合系统的需要,即接口不兼容。想要

2016-05-08 22:13:19 1340

原创 十八、组合设计模式

1. 组合设计模式介绍组合设计模式在日常生活中比较常见,在数据结构中就是我们的树结构。 常见的有: 1. 多级树形菜单 2. 文件和文件夹目录定义将对象组合成树形结构以表示“部分-整体”的层次结构,使得对象和组合对象的使用具有一致性。2. 组合设计模式使用场景表示对象的部分-整体层次结构时。从一个整体中能够独立出部分模版或功能的场景。3. 组合设计模式UML类角色介绍Component

2016-05-07 21:09:28 1555

原创 十七、代理设计模式

1. 代理设计模式介绍代理设计模式,从名字中我们就能知道其大致意思。我们生活中有很多“代理”,比如,租房中介,海外代购等。就是一种本来需要A做的事,让B去代做。 定义:为其他对象提供一种代理以控制对这个对象的访问。2. 代理设计模式使用场景当我们无法直接访问某一个对象时,可以通过一个代理对象间接访问。通常委托对象和代理对象有着相同的接口。(1)、远程代理,为一个对象在不同的地址空间提供局部代表

2016-05-07 21:05:56 1374 1

原创 十六、 中介者设计模式

1. 中介者设计模式介绍用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显示地相互引用,从而使耦合松散,而且可以独立地改变它们之间的交互。中介设计模式将对象之间多对多关系变成一对多的关系,中介者对象将系统从网状结构变成以调停者为中心的星形结构,达到降低系统的复杂性,提高可扩展性的作用。2. 中介者设计模式使用场景当对象之间的交互操作很多而且每个对象的行为操作都依赖彼此时,为防止在修

2016-05-04 14:30:08 478

原创 十五、访问者设计模式

1. 访问者模式介绍定义:表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素类的前提下定义作用于这些元素的新操作。这句话该怎么理解呢? 可以这么理解,有一个操作,它是作用于一些元素上的,而这些元素属于某一个对象结构。2. 访问者模式的使用场景加入一个对象中存在着一些与本对象不相干的操作,为了避免这些操作污染这个对象,则可以使用访问者模式来把这些操作封装到访问者中去。假如一组对象

2016-05-03 20:35:03 632

原创 十四、模版方法设计模式

1. 模版方法模式介绍在面向对象开发过程中,通常我们会遇到这样的一个问题:我们知道一个算法的关键步骤,并确定了这些步骤的执行顺序。但是某些步骤的具体实现是未知的,或者说某些步骤的实现与具体的环境相关。例如: 去食堂吃饭一般都有这样的步骤: 1. 排队 2. 买饭 3. 吃饭 这三个步骤一般都是固定的,但是不同的菜,三个步骤的具体操作是不确定的。 不同的菜买不同的原料;不同的菜不同的切法;不

2016-05-03 20:16:42 1642

原创 十三、迭代器设计模式

1. 迭代器模式介绍提供一种方法顺序访问一个容器对象中的各个元素,而又不需要暴露该对象的内部表示。2. 迭代器模式的使用场景遍历一个容器对象3. 迭代器模式的UML类图角色介绍:Iterator:迭代器接口。迭代接口负责定义、访问和遍历元素的接口。Concrete Iterator:具体迭代器类。主要是实现迭代器接口,并记录遍历的当前位置。Aggregate:容器接口。负责提供创建具体迭代器角

2016-05-01 21:29:19 1154

原创 十二、备忘录设计模式

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

2016-05-01 16:36:29 4749

原创 十一、观察者设计模式

1. 观察者模式的介绍观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生变化时,会通知所有观察者对象,使它们能够自动更新自己。例如:我们在使用应用市场下载应用时,我们的通知栏会有下载进度显示,我们的详情页会有进度显示,我们的列表中也会有下载进度显示,这就是一个典型的观察者设计模式,多个观察者监听同一个下载进度。2. 观察者模式的使用场景3. 观察者

2016-04-30 18:15:42 5460 5

原创 十、命令设计模式

1. 命令设计模式介绍将一个请求封装成一个对象,从而让用户使用不同的请求把客户端参数化;对请求排队或者记录请求日志,以及支持可撤销的操作。2. 命令模式使用场景整个调用过程比较复杂,或者存在多处这种调用。这时,使用Command类对该调用加以封装,便于功能的再利用。调用前后需要对调用参数进行某些处理。调用前后需要进行某些额外处理,比如日志,缓存,记录历史操作等等。3. 命令模式的UML类图4

2016-04-29 20:26:57 558

原创 九、解释器设计模式

1.解释器模式介绍解释器模式是类的行为模式,给定一个语言后,解释器模式可以定义出其文法的一种表示,并同时提供一个解释器。客户端可以使用这个解释器来解释这个语言中的句子。 解释器模式在实际运用上相对来说少很多,因为很少会自己去构造语言的文法。2.解释器模式使用场景重复发生的问题可以使用解释器模式。一个简单语法需要解释的场景。3. 解释器模式的UML类图由于解释器模式很好使用,下面的术语解释直接

2016-04-28 22:44:00 977

原创 八、责任链设计模式

1. 责任链模式介绍使多个对象都有机会处理请求,从而避免了请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有对象处理它为止。考虑到如下情景: 小李要出差,出差之后,小李要报销经费,小李申请了50000块的经费。 首先向组长提出,组长,他只能报销2000元以内的。组长把小李的请求向主管提出。 主管收到申请后,主管说他也无法批准,他只能批准5000以内

2016-04-28 22:40:06 1058

原创 七、状态设计模式

1. 状态设计模式介绍很多情况下,一个对象的行为取决于它的一个或者多个变化的属性,这些属性我们称之为状态,这个对象称为状态对象。对于状态对象而言,它的行为依赖于它的状态。举个例子: 我们买火车票,只有我们买票了之后,才会有退票这个选项。没有买票则没有退票的选项。所以说我们退票的行为依赖于我们已经买票了这个”状态”。状态模式和策略模式的结构很相似,但是它们的目的和本质上却不是一样的。状态模式是平行的,

2016-04-28 22:37:15 823 1

原创 六、策略设计模式

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

2016-04-27 10:19:56 496 1

原创 五、抽象工厂模式

1. 抽象工厂模式介绍抽象工厂模式起源于以前对不同操作系统的图形化解决方案,如不同操作系统中的按钮和文本控件其实现不同,展示效果也不一样。对于每一个操纵系统,其本身就构成了一个产品类,而按钮和文本控件也构成一个产品类,两种产品类两种变化,各自有自己的特性。2. 抽象工厂模式使用场景一个对象族有相同的约束时可以使用抽象工厂模式。例如,Android和IOS,WP下都有短信和拨号软件,两者都属于soft

2016-04-26 14:58:11 608 1

原创 四、工厂设计模式

1. 工厂设计模式介绍工厂设计模式定义了一个用于创建对象的接口,让子类决定实例化哪个类。是创建型设计模式之一。2. 工厂设计模式使用场景在任何需要生成复杂对象的地方,都可以使用工厂方法模式。复杂对象适合使用工厂模式,用new就可以完成创建的对象无需使用工厂模式。3. 工厂设计模式UML类图4. 工厂设计模式简单实现 情景描述,汽车A,B,C内部的结构差异不大,整体一致,所以用一个生产线就可以生产

2016-04-26 10:44:18 648 1

原创 三、原型设计模式

1. 原型设计模式介绍用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。原型设计模式多用于创建复杂的或者构造耗时的实例。因为这种情况下,复制一个已经存在的实例可使程序运行更高效。2. 原型设计模式使用场景类初始化需要消耗非常多的资源,这个资源包括数据、硬件资源等,通过原型拷贝避免这些消耗。通过new产生一个对象需要非常繁琐的数据准备或访问权限,这时可以使用原型模式。一个对象需要提供

2016-04-25 21:14:20 594 3

原创 二、Builder设计模式

1. Builder模式的介绍 将一个复杂对象的构建和它的表示分离,使得同样的构建过程可以创建不同的表示。2. Builder模式使用场景相同的方法,不同的执行顺序,产生不同的事件结果时。多个部件或零件,都可以装配到一个对象中,但是产生的运行结果又不相同时。产品类型非常复杂,或者产品类中调用顺序不同产生了不同的作用,这个使用建造者模式非常适合。当初始化一个对象特别复杂,如参数多,且很多

2016-04-25 14:51:02 480 1

原创 一、 单例设计模式

1. 单例设计模式介绍单例设计模式必须保证只有一个实例存在。例如使用ImageLoader,ImageLoader中包含线程池、网络请求等。非常消耗资源,使用单例模式可以节省系统内存的开销。2. 单击设计模式使用场景 确保这个类只有一个对象的场景,避免产生多个对象消耗过多的资源,或者某种类型的对象只应该只有一个。3. 单例设计模式UML类图4. 单例设计模式java代码1.懒汉模式:

2016-04-24 12:51:34 737 2

原创 android下的MVP架构

android下的MVP架构1. MVP概述MVP代表Model,View和Presenter。View层负责处理用户事件和视图部分的展示。在Android中,它可能是Activity或者Fragment类。Model层负责访问数据。数据可以是远端的Server API,本地数据库或者SharedPreference等。Presenter层是连接(或适配)View和Model的桥梁。2. MVC

2016-04-23 20:39:56 476 1

原创 第十二章 、Bitmap的加载和Cache

第十二章 、Bitmap的加载和Cache目前常用的缓存策略是LruCache和DiskLruCache,其中LruCache常被用作内存缓存,而DiskLruCache常被用作存储缓存。Lru是Least Recently Used的缩写,即最近最少使用算法。1. Bitmap的高效加载BtimapFactory提供了四种加载方法 decodeFile 文件系统decodeResour

2016-04-21 08:48:17 355

原创 第十一章、Android的线程和线程池

第十一章、Android的线程和线程池概述从用途来说,线程分为主线程和子线程,主线程主要处理和界面相关的事情,而子线程则往往用于耗时操作。在操作系统中,线程是操作系统调度的最小单元,同时线程又是一种受限的系统的资源,并且线程的创建和销毁都有相应的开销。一个线程池会缓存一定数量的线程,通过线程池就可以避免因为频繁替换和销毁线程所带来的系统开销。Android中的线程池来源于Java,主要是通过E

2016-04-21 08:47:28 402

原创 第十章、Android的消息机制

第十章、Android的消息机制Handler是Android消息机制的上层接口,使得我们在开发过程中只需要和Handler交互即可。Android的消息机制主要是指Handler的运行机制,Handler的运行需要底层MessageQueue和Looper的支撑。MessageQueue的内部存储结构并不是真正的队列,而是采用单链表的数据结构来存储消息的列表。Looper会以无限循环的形式

2016-04-21 08:46:50 365

原创 第九章、 四大组件的工作过程

第九章、 四大组件的工作过程1. 四大组件的运行状态Android的四大组件中除了BroadcastReceiver以外,其它三种组件都必须在AndroidManifest中注册,对于BroadRecevier来说,它既可以在AndroidManifest注册也可以通过代码注册。在调用方式上,Activity、Service和BroadcastRecevier需要借助Intent,而Content

2016-04-21 08:43:46 567

原创 Android全局异常统一处理

全局异常处理主要用到的类: 1. BaseException extends Exception 2. ExceptionHandler BaseExceptionpublic class BaseException extends Exception { public BaseException() { super(); }

2016-04-21 08:39:12 2061

原创 第八章、理解Window和WindowManager

第八章、理解Window和WindowManager> Window表示一个窗口的概念。Window是一个抽象类,它的具体表现是PhoneWindow。通过WindowManager即可创建一个Window。Window的具体实现位于WindowManagerService中,WindowManager和WindowManagerServide的交互是一个IPC的过程。Android的中所有的视图都

2016-04-16 21:52:59 455

原创 第七章、Android动画深入分析

第七章、Android动画深入分析> Android动画可以分为三种:View动画,帧动画、属性动画。其实帧动画也属于View动画,只不过它和平移、旋转等常见的View动画在表现形式上略有不同而已。1. View动画 View动画的作用对象是View,支持四种动画:平移、缩放、旋转、透明度。 1. View动画的种类 1. View动画的四种变化效果对应着An

2016-04-16 21:52:06 419

原创 第六章、android的Drawable

第六章、android的DrawableDrawable 简介 Drawable有很多种,它们都表示一中图像的概念,但是它们又不全是图片,通过颜色也可以构造出各式各样的图像效果。在实际开发中,Drawable常用来作为View的背景使用。Drawable一般都是通过XML来定义的,我们也可用通过代码来创建具体的Drawable对象。Drawable的分类 BitmapDrawable 、Nin

2016-04-16 21:51:12 415

原创 第五章、理解RemoteView

第五章、理解RemoteView RemoteView在Android中的使用场景有两种:通知栏和桌面小部件。RemoteViews的应用 RemoteViews在实际开发中,主要用在通知栏和桌面小部件的开发过程中。主要是通过NotificationManager的notify方法实现的。桌面小部件则是通过AppWidgetProvider来实现的。AppWidgetProvider本质上是一

2016-04-16 21:50:03 1195

原创 第四章、View的工作原理

第四章、View的工作原理> 为了更好的自定义View,还需要掌握View底层工作原理,比如View的测量布局,布局流程以及绘制流程。掌握了这几个流程后,我们就对View的底层更加了解,这样就可以做出一个比较完善的自定义View。ViewRoot和DecorViewView的绘制流程是从ViewToot的performTraversals方法开始的,经过的measure、layout和draw三个过

2016-04-11 19:59:39 652

原创 第三章View的事件体系

第三章View的事件体系View基础知识什么是View? View是Android中所有控件的基类。View是一种界面层控件的一种抽象,它代表了一个控件。ViewGroup也是继承自ViewView的位置参数 View 的位置主要是由它的四个顶点来决定的,分别对应于View的四个属性:top、left、right、bottom.这些坐标都是相对于View的父容器来说的,是一种相对坐标。Mo

2016-04-11 19:58:27 1999

原创 第二章 IPC机制

第二章 IPC机制Android IPC简介 IPC 含义为进程间通信,是指两个进程间进行数据交换的过程。 在Android 中最有特色的进程间通信方式就是Binder,通过Binder可以轻松地实现进程间通信。同时,Android还支持Socket通信Android中的多进程模式开启多进程模式 方法只有一个,就是在AndroidMenifest中给四大组件指定android:proc

2016-04-09 20:18:42 439

原创 第一章 Activity的生命周期和启动模式

第一章 Activity的生命周期和启动模式生命周期全面分析典型情况 : 正常情况启动Activity第一次启动某个特定Activity,回调:onCreate()->onStart()-> onResume()用户打开新的Activity或者切换到桌面,回调如下:onPause()-> onStop(),如果Activity采用了透明主题,当前Activity不会调用onStop().再次回

2016-04-09 20:12:53 462

原创 android观察者设计模式 下载进度同步显示

观察者设计模式简介 观察者可以用来做什么? 比如应用商店下载进度条的问题 在列表中点击下载后,会显示进度状态: 当点击详情页面时,进度条会同步: 实现原理:利用观察者设计模式两个进度条分别为两个观察者,同时观察下载这个被观察者,当下载进度发生变化时,两个被观察者同时能够接收到变化的消息,下载进度得到了同步如何实现?两种方法实现系统接口实现

2015-07-25 15:46:49 1180 1

原创 java设计模式-Builder

Builder模式下 /** * 食品包装外面标签的营养成分 * @author Administrator * */ public class NutritionFacts { public final int servingSize; //大小 private final int servings;

2015-07-19 19:07:19 442

原创 01."中大在线App"总分析

主布局分析

2015-07-11 00:21:39 471

空空如也

空空如也

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

TA关注的人

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