
android设计模式
我就是马云飞
欢迎来到马云飞的博客,寂寞如风一般的少年。正朝着大牛的方向前行。希望我的博客可以帮助你们向大牛的方向前进。我不信神,但我通过巨人的肩膀凝视神所在的方向。
展开
-
Android单例模式
前面我们介绍了建造者模式,今天来稍微讲一下单例模式,因为单例模式过于简单,下面我就直接上代码了。简单式:public class Single{ private static Single single=new Single(); public static Single instance(){ return singlel; }}复杂式:public cla原创 2016-11-26 22:08:12 · 917 阅读 · 2 评论 -
设计模式之备忘录模式
概述备忘录模式是一种行为模式,该模式用于保存当前对象,并且在之后可以再次恢复到此状态。这有点像我们平时说的“后悔药”。备忘录模式实现的方式需要保证被保存的对象不能被对象从外部访问,目的是为了保护好被保存的这些对象的状态的完整性以及内部实现不像外暴露。使用场景需要保存/恢复数据的相关状态场景。提供一个可回滚的操作。具体实现备忘录模式使用三个类 Memento、Originator 和...原创 2018-12-14 15:55:25 · 288 阅读 · 0 评论 -
设计模式之迭代器模式
概述迭代器模式又称游标模式,是行为性模式之一。这种模式用于顺序访问集合对象的元素,不需要知道集合对象的底层表示。使用场景访问一个聚合对象的内容而无须暴露它的内部表示。需要为聚合对象提供多种遍历方式。为遍历不同的聚合结构提供一个统一的接口。具体实现我们将创建一个叙述导航方法的 Iterator 接口和一个返回迭代器的 Container 接口。实现了 Container 接口的实体...原创 2018-12-14 15:55:54 · 250 阅读 · 0 评论 -
设计模式之中介者模式
概述中介者模式是用来降低多个对象和类之间通信的复杂性。当某些对象之间的作用发生改变时,不会立即影响其他的一些对象之间的作用。保证这些作用可以彼此独立变化。使用场景系统中对象之间存在比较复杂的引用关系,导致它们之间的依赖关系结构混乱而且难以复用该对象。想通过一个中间类来封装多个类中的行为,而又不想生成太多的子类。具体实现我们通过聊天室实例来演示中介者模式。实例中,多个用户可以向聊天室...原创 2018-12-14 15:56:35 · 279 阅读 · 0 评论 -
设计模式之访问者模式
概述访问者模式是一种将数据结构和数据操作分离的设计模式,它是设计模式中最复杂的一个,一般来说,它的使用概率并不高,但当你真当使用它时,你就真的需要它了。元素的执行算法可以随着访问者改变而改变。这种类型的设计模式属于行为型模式。根据模式,元素对象已接受访问者对象,这样访问者对象就可以处理元素对象上的操作。使用场景对象结构中对象对应的类很少改变,但经常需要在此对象结构上定义新的操作。需要对一...原创 2018-12-14 15:57:05 · 184 阅读 · 0 评论 -
设计模式之代理模式
概述代理模式也称为委托模式,这种模式在开发和生活中都很常见,比如猪八戒去找高翠兰结果是孙悟空变的,可以这样理解:把高翠兰的外貌抽象出来,高翠兰本人和孙悟空都实现了这个接口,猪八戒访问高翠兰的时候看不出来这个是孙悟空,所以说孙悟空是高翠兰代理类。 还有让同学,同事带饭也是一种代理。总而言之,代理模式几乎可以说是无处不在了。那么我们看看代理模式有多普遍。使用场景当无法或不想直接访问某个对象或者访...原创 2018-12-14 15:57:34 · 280 阅读 · 0 评论 -
设计模式之组合模式
概述组合模式又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类型的设计模式属于结构型模式,它创建了对象组的树形结构。这种模式创建了一个包含自己对象组的类。该类提供了修改相同对象组的方式。使用场景部分、整体场景,如树形菜单,文件、文件夹的管理。具体实现 public class Employee { pri...原创 2018-12-14 15:57:59 · 186 阅读 · 0 评论 -
设计模式之适配器模式
概述适配器模式中开发中可以说是使用率最高的设计模式了。在listview、recyclerview中都需要使用适配器模式,并且在开发中遇到最多的问题也往往是在adapter中。这种模式涉及到一个单一的类,该类负责加入独立的或不兼容的接口功能。举个真实的例子,读卡器是作为内存卡和笔记本之间的适配器。您将内存卡插入读卡器,再将读卡器插入笔记本,这样就可以通过笔记本来读取内存卡。使用场景系统需要...原创 2018-12-14 15:58:31 · 196 阅读 · 0 评论 -
设计模式之享元模式
概述享元模式主要用于减少创建对象的数量,以减少内存占用和提高性能。这种类型的设计模式属于结构型模式,它提供了减少对象数量从而改善应用所需的对象结构的方式。使用场景系统中存在大量的相似对象。需要缓冲池的场景。具体实现public interface Ticket { public void showTicketInfo(String bunk);}// 火车票cla...原创 2018-12-14 15:59:00 · 265 阅读 · 0 评论 -
设计模式之桥接模式
概述桥接模式是把抽象化和实现化进行解耦,使二者可以独立变化。这种模式涉及到一个作为桥接的接口,使得实体类的功能独立于接口实现类。这两种类型的类可被结构化改变而互不影响。使用场景如果一个系统需要在构件的抽象化角色和具体化角色之间增加更多的灵活性,避免在两个层次之间建立静态的继承联系,通过桥接模式可以使它们在抽象层建立一个关联关系。对于那些不希望使用继承或因为多层次继承导致系统类的个数急剧...原创 2018-12-17 10:16:18 · 338 阅读 · 0 评论 -
设计模式之装饰模式
概述装饰模式也称包装模式,其使用一种对客户端透明的方式来动态扩展对象,同时它也是继承关系的一种替代方式之一。举个例子:孙悟空有 72 变,当他变成"庙宇"后,他的根本还是一只猴子,但是他又有了庙宇的功能。使用场景扩展一个类的功能。动态增加功能,动态撤销。具体实现//Component 英雄接口 public interface Hero { //学习技能 void...原创 2018-12-17 10:18:04 · 453 阅读 · 0 评论 -
设计模式之外观模式
概述外观模式中开发过程中使用率非常高。它向现有的系统添加一个接口,来隐藏系统的复杂性。这种模式涉及到一个单一的类,该类提供了客户端请求的简化方法和对现有系统类方法的委托调用。使用场景为复杂的模块或子系统提供外界访问的模块。子系统相对独立。预防低水平人员带来的风险。具体实现public interface Shape { void draw();}public clas...原创 2018-12-17 10:18:33 · 313 阅读 · 0 评论 -
设计模式之观察者模式
概述观察者模式是一个使用频率非常高的设计模式。不过这个模式的一个重要作用就是解耦,将被观察者和观察者解耦,使得他们的依赖性变小,甚至做到毫无依赖。它是一种定义对象间一对多的依赖关系。当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。使用场景关联行为场景,需要注意的是,关联是可拆分的,而不是“组合”关系。跨系统的消息交换场景,如消息队列,事件机制。需要在系统中创建一个...原创 2018-12-14 15:54:51 · 289 阅读 · 0 评论 -
设计模式之命令模式
概述命令模式相对于其他模式没有那么多的规定,因为它不是一个很规矩的模式。不过,正因为这一点,命令模式对比其他设计模式更为灵活。我们接触比较多的命令模式无非开关机。我们点击关机命令时,它会先暂停事件,然后结束所有进程,最后关机。也就是说我只需要点击一个关机按钮就可以做到这一系列的命令。而我们的命令模式其实也和这一样。讲一系列的动作进行请求封装,用户只需要调用一个方法,这些动作会被挨个执行。使用场...原创 2018-12-14 15:54:18 · 229 阅读 · 0 评论 -
Android建造者模式
Android设计模式在开发中还是比较常用的,当初除了会个单例其他啥都不会。今天为了修改工具类,稍微了解了下建造者模式。 用了明了的例子就是:A.b().c()。这种情况。我们最常见的就是dialog会用到了。先上dialog的demo: private void showDialog(Context context) { AlertDialog.Builder buil原创 2016-11-23 19:24:12 · 1761 阅读 · 0 评论 -
设计模式之六大设计原则
概述设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的;设计模式使代码编制真正工程化;设计模式是软件工程的基石脉络,如同大厦的结构一样。而设计原则则是设计模式所遵循的规则,设计模式就是实现了这些原则,从而达到了代码复用、增加可维护性的目的。在开发过程中...原创 2018-12-14 15:47:13 · 221 阅读 · 0 评论 -
设计模式之单例模式
概述单例模式是应用最广的设计模式之一。也可能是很多初级工程师唯一会使用的设计模式。从字面意思,单例模式就是单例对象的类必须保证只有一个实例的存在,而且自行实例化并向整个系统提供这个实例。例如,创建一个对象需要消耗太多的资源,如要访问IO和数据库等资源,这时需要考虑单例模式。懒汉单例模式线程不安全当提到单例模式的时候,我们第一反应就是如下代码:public class Singleton ...原创 2018-12-14 15:49:10 · 203 阅读 · 0 评论 -
设计模式之建造者模式
概述建造者模式又称Builder模式,它是一步步创建一个复杂的对象然后进行构建。可以精准的控制对象的构造过程。此模式是将构建复杂对象的过程与它的部件解耦,使得构建过程和部件的表示隔离开来。一个对象有很多复杂的信息,比如人,有身高,体重,性别,姓名,年龄等等。如何将这些信息给组合起来,然后形成这个对象。比如男生很多,20岁的男生也很多。这个信息组成的过程很漫长。对于这种情况,构建过程中对外部影藏...原创 2018-12-14 15:49:42 · 189 阅读 · 0 评论 -
设计模式之原型模式
概述原型模式是用于创建重复的对象,同时又能保证性能。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式是实现了一个原型接口,该接口用于创建当前对象的克隆。当直接创建对象的代价比较大时,则采用这种模式。例如,一个对象需要在一个高代价的数据库操作之后被创建。我们可以缓存该对象,在下一个请求时返回它的克隆,在需要的时候更新数据库,以此来减少数据库调用。使用场景1、资源优化...原创 2018-12-14 15:50:23 · 160 阅读 · 0 评论 -
设计模式之工厂模式
概述工厂模式在我们平常开发中应用比较广泛,或许你不知道,但你已经使用了很多次了。我们明确地计划不同条件下创建不同实例时,就会使用到工厂模式。工厂模式分为简单工厂模式和抽象工厂模式。这边我们先说简单的工厂模式。使用场景在任何需要生成复杂的对象的地方,都可以使用工厂模式。复杂对象适合使用工厂模式。而直接通过new就可以完成创建的对象无需使用工厂模式。具体实现首先,我们创建一个实体类的接口:...原创 2018-12-14 15:50:54 · 241 阅读 · 0 评论 -
设计模式之抽象工厂模式
概述前面我们已经说到了工厂模式,现在我们扯扯抽象工厂模式。从字母意思理解下,工厂也就是会生产指定的产品。那么抽象工厂就意味着生产出来的产品不是指定的。往简单点说,抽象工厂就是为创建一组相关或者相互依赖的对象提供一个接口,而不需要指明他们的具体类。使用场景一个产品族有相同的约束时可以使用抽象工厂模式。是不是听起来很抽象?比如android、ios下都有短信软件和拨号软件,两者同属于软件。但是,...原创 2018-12-14 15:51:27 · 138 阅读 · 0 评论 -
设计模式之策略模式
概述策略模式在我们日常开发中也是经常遇见的。比如实现某一个功能有多种算法或者策略。我们根据具体情况去实现它。例如:排序算法,我们可以使用插入、冒泡、快排等等。针对这种情况,我们一般将多个策略写在一个工具类中去方便调用。我们需要A策略就是调用A方法,需要B策略就调用B方法。如果将这些算法或者策略抽象出来,变成一个接口,不同的策略有不同的实现类。这样我们就可以通过注入不同的对象去实现策略的动态替...原创 2018-12-14 15:52:07 · 146 阅读 · 0 评论 -
设计模式之状态模式
概述在状态模式中,类的行为是基于它的状态改变的。这种类型的设计模式属于行为型模式。状态模式是把所有的行为包装在不同的状态对象中,意在是让一个对象在其内部改变的时候,他的行为也跟着改变。使用场景1、行为随状态改变而改变的场景。2、代码中包含大量的条件语句,比如if-else和switch-case,且这些条件依赖于该对象的状态。具体实现这边我以播放器的开始和停止举例。首先我们创建一个状...原创 2018-12-14 15:52:40 · 204 阅读 · 0 评论 -
设计模式之责任链模式
概述责任链模式,顾名思义,它是一个链式模型,这种模式给予请求的类型,对请求的发送者和接收者进行解耦。对于这种结构,每个节点可以拆分在链接,所以,这种模式有着较好的灵活性。使用场景多个对象处理同一个请求在请求处理者不明确的情况下向多个对象中的一个提交一个请求。需要动态指定一组对象处理请求。具体实现众所周知,Android中最常见的责任链模式。现在我们来实现一个简单的责任链模式。我...原创 2018-12-14 15:53:14 · 431 阅读 · 0 评论 -
设计模式之解释器模式
概述解释器模式一般来说,我们用的比较少,它提供了一种解释语言的语法或者表达式的方式,比如说1+2,我们可以通过解释器模式告诉你这是一个加法。使用场景如果一种特定类型的问题发生的频率足够高,那么可能就值得将该问题的各个实例表述为一个简单语言中的句子。这样就可以构建一个解释器,该解释器通过解释这些句子来解决该问题。可以将一个需要解释执行的语言中的句子表示为一个抽象语法树。一些重复出现的问题...原创 2018-12-14 15:53:50 · 149 阅读 · 0 评论 -
设计模式之模块模式
概述在模板模式中,一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。这种类型的设计模式属于行为型模式。使用场景多个子类有公共方法,并且逻辑基本相同时。重要的、复杂的方法,可以考虑作为模板方法。重构时,模板模式一般是最常用的,把相同的代码抽取到父类中,通过子类约束其行为。###例子我们将创建一个定义操作的 Game 抽象...原创 2018-12-17 10:18:59 · 643 阅读 · 1 评论