Android下的设计模式
文章平均质量分 80
设计模式在Android系统源码中的体现,设计模式在Android开发下的体现。
ghj202222
这个作者很懒,什么都没留下…
展开
-
二十三、 桥接设计模式
1. 桥接设计模式介绍在软件系统中,某些类型由于自身的逻辑,它具有两个或多个维度的变化,可以采用桥接模式来应对这种“多维度变化”。定义将抽象部分与实现部分分离,使它们可以独立地进行变化。2. 桥接设计模式使用场景如果一个系统需要在构建的抽象化角色和具体角色之间增加更多的灵活性,避免在两个层次之间建立静态的联系。一个类存在两个独立变化的维度,并且这两个维度都需进行扩展。3. 桥接设计模式UML类原创 2016-05-10 14:11:26 · 1258 阅读 · 0 评论 -
二十二、外观设计模式
1. 外观设计模式介绍显示生活中有一个种电视万能遥控器,只要和电视配对好了以后,就可以正常使用,不同型号的电视,只要一旦适配,所有的操作模式一模一样。这就是一种外观适配模式。表面上都是同一个遥控器,实际上不同型号的电视,不同的操作,发出的型号可能各不相同。但是对于用户来说,没有任何差别。定义要求一个子系统的外部和其内部的通信必须通过一个统一的对象进行。门面模式提供一个高层次的接口,使得子系统更易使用原创 2016-05-09 20:33:49 · 1523 阅读 · 0 评论 -
二十一、享元设计模式
1. 享元设计模式介绍享元模式用来尽可能减少内存使用量,它适合用于可能存在大量重复对象的场景,用来缓存可共享的对象,达到对象共享、避免创建过多对象的效果。定义:使用共享对象可有效地支持大量的细粒度对象。2. 享元设计模式使用场景如果一个系统中存在大量的相同或者相似的对象,由于这类对象的大量使用,会造成系统内存的消耗,可以使用享元模式来减少系统中对象的数量。对象的大部分状态都可以外部化,可这些外部原创 2016-05-09 20:25:17 · 1667 阅读 · 0 评论 -
二十、装饰设计模式
1. 装饰设计模式介绍定义动态地给一个对象添加一些额外的职责。就增加功能来说,装饰模式相比生成子类更为灵活。2. 装饰设计模式使用场景动态地给一个对象添加一些额外的职责。3. 装饰设计模式UML类图角色介绍:Component:抽象组件,充当的是被装饰的原始对象。ConcreteComponent:组件具体实现类。Decotor:抽象装饰类:职责就是为了装饰组件对象,内部有一个指向组件对象的引原创 2016-05-08 22:25:29 · 1554 阅读 · 0 评论 -
十九、适配器设计模式
1. 适配器模式介绍我们在日常生活中,会经常接触到设配器模式,比如我们的充电器,不同的手机接口类型可能不一样,这个时候只要一个转接口,就可以解决我们的问题。这个转接口就是我们的适配器。定义适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起的两个类能够在一起工作。2. 适配器模式的使用场景系统需要使用现有的类,而此类的接口不符合系统的需要,即接口不兼容。想要原创 2016-05-08 22:13:19 · 1354 阅读 · 0 评论 -
十八、组合设计模式
1. 组合设计模式介绍组合设计模式在日常生活中比较常见,在数据结构中就是我们的树结构。 常见的有: 1. 多级树形菜单 2. 文件和文件夹目录定义将对象组合成树形结构以表示“部分-整体”的层次结构,使得对象和组合对象的使用具有一致性。2. 组合设计模式使用场景表示对象的部分-整体层次结构时。从一个整体中能够独立出部分模版或功能的场景。3. 组合设计模式UML类角色介绍Component原创 2016-05-07 21:09:28 · 1568 阅读 · 0 评论 -
十七、代理设计模式
1. 代理设计模式介绍代理设计模式,从名字中我们就能知道其大致意思。我们生活中有很多“代理”,比如,租房中介,海外代购等。就是一种本来需要A做的事,让B去代做。 定义:为其他对象提供一种代理以控制对这个对象的访问。2. 代理设计模式使用场景当我们无法直接访问某一个对象时,可以通过一个代理对象间接访问。通常委托对象和代理对象有着相同的接口。(1)、远程代理,为一个对象在不同的地址空间提供局部代表原创 2016-05-07 21:05:56 · 1385 阅读 · 1 评论 -
十六、 中介者设计模式
1. 中介者设计模式介绍用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显示地相互引用,从而使耦合松散,而且可以独立地改变它们之间的交互。中介设计模式将对象之间多对多关系变成一对多的关系,中介者对象将系统从网状结构变成以调停者为中心的星形结构,达到降低系统的复杂性,提高可扩展性的作用。2. 中介者设计模式使用场景当对象之间的交互操作很多而且每个对象的行为操作都依赖彼此时,为防止在修原创 2016-05-04 14:30:08 · 492 阅读 · 0 评论 -
十五、访问者设计模式
1. 访问者模式介绍定义:表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素类的前提下定义作用于这些元素的新操作。这句话该怎么理解呢? 可以这么理解,有一个操作,它是作用于一些元素上的,而这些元素属于某一个对象结构。2. 访问者模式的使用场景加入一个对象中存在着一些与本对象不相干的操作,为了避免这些操作污染这个对象,则可以使用访问者模式来把这些操作封装到访问者中去。假如一组对象原创 2016-05-03 20:35:03 · 647 阅读 · 0 评论 -
十四、模版方法设计模式
1. 模版方法模式介绍在面向对象开发过程中,通常我们会遇到这样的一个问题:我们知道一个算法的关键步骤,并确定了这些步骤的执行顺序。但是某些步骤的具体实现是未知的,或者说某些步骤的实现与具体的环境相关。例如: 去食堂吃饭一般都有这样的步骤: 1. 排队 2. 买饭 3. 吃饭 这三个步骤一般都是固定的,但是不同的菜,三个步骤的具体操作是不确定的。 不同的菜买不同的原料;不同的菜不同的切法;不原创 2016-05-03 20:16:42 · 1656 阅读 · 0 评论 -
十三、迭代器设计模式
1. 迭代器模式介绍提供一种方法顺序访问一个容器对象中的各个元素,而又不需要暴露该对象的内部表示。2. 迭代器模式的使用场景遍历一个容器对象3. 迭代器模式的UML类图角色介绍:Iterator:迭代器接口。迭代接口负责定义、访问和遍历元素的接口。Concrete Iterator:具体迭代器类。主要是实现迭代器接口,并记录遍历的当前位置。Aggregate:容器接口。负责提供创建具体迭代器角原创 2016-05-01 21:29:19 · 1165 阅读 · 0 评论 -
十二、备忘录设计模式
1. 备忘录设计模式介绍在不破坏封闭的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样,以后就可将该对象恢复到原先保存的状态。2. 备忘录设计模式使用场景需要保存一个对象在某一个时刻的状态或部分状态。如果用一个接口来让其它对象得到这些状态,将会暴露对象的实现细节并破坏对象的封装性,一个对象不希望外界直接访问其内部状态,通过中间对象可以间接访问其内部状态。3. 备忘录设计模式UM原创 2016-05-01 16:36:29 · 4768 阅读 · 0 评论 -
十一、观察者设计模式
1. 观察者模式的介绍观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生变化时,会通知所有观察者对象,使它们能够自动更新自己。例如:我们在使用应用市场下载应用时,我们的通知栏会有下载进度显示,我们的详情页会有进度显示,我们的列表中也会有下载进度显示,这就是一个典型的观察者设计模式,多个观察者监听同一个下载进度。2. 观察者模式的使用场景3. 观察者原创 2016-04-30 18:15:42 · 5496 阅读 · 5 评论 -
十、命令设计模式
1. 命令设计模式介绍将一个请求封装成一个对象,从而让用户使用不同的请求把客户端参数化;对请求排队或者记录请求日志,以及支持可撤销的操作。2. 命令模式使用场景整个调用过程比较复杂,或者存在多处这种调用。这时,使用Command类对该调用加以封装,便于功能的再利用。调用前后需要对调用参数进行某些处理。调用前后需要进行某些额外处理,比如日志,缓存,记录历史操作等等。3. 命令模式的UML类图4原创 2016-04-29 20:26:57 · 572 阅读 · 0 评论 -
九、解释器设计模式
1.解释器模式介绍解释器模式是类的行为模式,给定一个语言后,解释器模式可以定义出其文法的一种表示,并同时提供一个解释器。客户端可以使用这个解释器来解释这个语言中的句子。 解释器模式在实际运用上相对来说少很多,因为很少会自己去构造语言的文法。2.解释器模式使用场景重复发生的问题可以使用解释器模式。一个简单语法需要解释的场景。3. 解释器模式的UML类图由于解释器模式很好使用,下面的术语解释直接原创 2016-04-28 22:44:00 · 996 阅读 · 0 评论 -
八、责任链设计模式
1. 责任链模式介绍使多个对象都有机会处理请求,从而避免了请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有对象处理它为止。考虑到如下情景: 小李要出差,出差之后,小李要报销经费,小李申请了50000块的经费。 首先向组长提出,组长,他只能报销2000元以内的。组长把小李的请求向主管提出。 主管收到申请后,主管说他也无法批准,他只能批准5000以内原创 2016-04-28 22:40:06 · 1076 阅读 · 0 评论 -
七、状态设计模式
1. 状态设计模式介绍很多情况下,一个对象的行为取决于它的一个或者多个变化的属性,这些属性我们称之为状态,这个对象称为状态对象。对于状态对象而言,它的行为依赖于它的状态。举个例子: 我们买火车票,只有我们买票了之后,才会有退票这个选项。没有买票则没有退票的选项。所以说我们退票的行为依赖于我们已经买票了这个”状态”。状态模式和策略模式的结构很相似,但是它们的目的和本质上却不是一样的。状态模式是平行的,原创 2016-04-28 22:37:15 · 831 阅读 · 1 评论 -
六、策略设计模式
1. 策略设计模式介绍策略设计模式定义了一系列算法,并将每一个算法封装起来,而且使他们可以相互替换。策略设计模式让算法独立与使用它的客户而独立变化。2. 策略设计模式使用场景针对同一类型的问题的多种处理方式,仅仅是具体行为有差别时。需要安全地封装多种同一类型的操作时。出现同一抽象类有多个子类,而又需要使用if-else 或者switch-case来选择具体子类时。3. 策略设计模式的UML类原创 2016-04-27 10:19:56 · 511 阅读 · 1 评论 -
五、抽象工厂模式
1. 抽象工厂模式介绍抽象工厂模式起源于以前对不同操作系统的图形化解决方案,如不同操作系统中的按钮和文本控件其实现不同,展示效果也不一样。对于每一个操纵系统,其本身就构成了一个产品类,而按钮和文本控件也构成一个产品类,两种产品类两种变化,各自有自己的特性。2. 抽象工厂模式使用场景一个对象族有相同的约束时可以使用抽象工厂模式。例如,Android和IOS,WP下都有短信和拨号软件,两者都属于soft原创 2016-04-26 14:58:11 · 620 阅读 · 1 评论 -
四、工厂设计模式
1. 工厂设计模式介绍工厂设计模式定义了一个用于创建对象的接口,让子类决定实例化哪个类。是创建型设计模式之一。2. 工厂设计模式使用场景在任何需要生成复杂对象的地方,都可以使用工厂方法模式。复杂对象适合使用工厂模式,用new就可以完成创建的对象无需使用工厂模式。3. 工厂设计模式UML类图4. 工厂设计模式简单实现 情景描述,汽车A,B,C内部的结构差异不大,整体一致,所以用一个生产线就可以生产原创 2016-04-26 10:44:18 · 661 阅读 · 1 评论 -
三、原型设计模式
1. 原型设计模式介绍用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。原型设计模式多用于创建复杂的或者构造耗时的实例。因为这种情况下,复制一个已经存在的实例可使程序运行更高效。2. 原型设计模式使用场景类初始化需要消耗非常多的资源,这个资源包括数据、硬件资源等,通过原型拷贝避免这些消耗。通过new产生一个对象需要非常繁琐的数据准备或访问权限,这时可以使用原型模式。一个对象需要提供原创 2016-04-25 21:14:20 · 617 阅读 · 3 评论 -
二、Builder设计模式
1. Builder模式的介绍 将一个复杂对象的构建和它的表示分离,使得同样的构建过程可以创建不同的表示。2. Builder模式使用场景相同的方法,不同的执行顺序,产生不同的事件结果时。多个部件或零件,都可以装配到一个对象中,但是产生的运行结果又不相同时。产品类型非常复杂,或者产品类中调用顺序不同产生了不同的作用,这个使用建造者模式非常适合。当初始化一个对象特别复杂,如参数多,且很多原创 2016-04-25 14:51:02 · 507 阅读 · 1 评论 -
一、 单例设计模式
1. 单例设计模式介绍单例设计模式必须保证只有一个实例存在。例如使用ImageLoader,ImageLoader中包含线程池、网络请求等。非常消耗资源,使用单例模式可以节省系统内存的开销。2. 单击设计模式使用场景 确保这个类只有一个对象的场景,避免产生多个对象消耗过多的资源,或者某种类型的对象只应该只有一个。3. 单例设计模式UML类图4. 单例设计模式java代码1.懒汉模式:原创 2016-04-24 12:51:34 · 752 阅读 · 2 评论