![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
android设计模式
文章平均质量分 70
Allure丶
这个作者很懒,什么都没留下…
展开
-
Android设计模式之(12)----备忘录模式
备忘录模式备忘录模式属于行为模式。字面意思理解,备忘录是一个存储的东西。备忘录模式主要用于保存对象状态,便于之后的状态恢复或者使用。典型的备忘录就犹如我们平常玩游戏存档一样,在某一时刻挑战BOSS之前满血满蓝存档,在战斗过程中如果死亡(0血0蓝),可以加载存档重新恢复状态继续挑战。同时备忘录模式中的对象状态要保存状态的安全性完整性,因此不允许对象从外部来获取内部的状态。Android中的状态恢复就属原创 2017-08-25 11:15:58 · 283 阅读 · 0 评论 -
Android设计模式之(4)----工厂方法模式
工厂方法模式比如富士康是一个工厂,为其他外部厂商提供相同或者不同的产品,而外部厂商不用关心富士康内部的实现过程,只需要接受结果即可。如果有新的产品,也只需要告诉富士康,富士康负责生产输出就好。因此工厂模式可大幅度降低模块之间的耦合,加强扩展性。应用场景需要生成一个或者多个复杂对象的具体实现工厂模式分类工厂方法模式 标准工厂简单工厂反射工厂缓存工厂私有工厂抽象工厂模式本文主要介绍工厂方原创 2017-08-16 14:51:14 · 245 阅读 · 0 评论 -
Android设计模式之(3)----原型模式
原型模式用原型实例指定创建对象的,拷贝这些对象生成新的对象进行使用。也可以直接进行new一个对象,但是当对象的构造复杂时,new的效率会很低,使用clone更好new适用于简单的构造clone适用于复杂的构造应用场景资源消耗大的对象节省资源,比如在for循环内创建相同的对象一个对象要让其他人使用,并且使用过程中要改变这个对象的某些属性,可考虑将原有对象拷贝,并且修改需要改变的属性,在进行使用原创 2017-08-16 11:08:50 · 268 阅读 · 0 评论 -
Android设计模式之(2)----Builder模式
Builder模式Builder模式使用链式结构创建复杂对象,将过程与结果分开,创建过程中可以自行组合。使用场景一个对象,不同组合,不同顺序生成不同的结果优点:封装性更规范,程序调用不用关系内部细节,注重结果即可 缺点:如果builder对象过多,会加大内存消耗public class TabInfoBean { private int count;//Tab的个数 必选 pri原创 2017-08-16 11:04:58 · 256 阅读 · 0 评论 -
Android设计模式之(1)----单例模式
单例模式一个类只有一个实例,并且可以全局访问使用应用场景如账户管理类,数据库操作类等(某个对象频繁被访问使用)常用方式饿汉式懒汉式同步加锁DCL双重加锁验证静态内部类枚举单例饿汉式加载类的同时立即进行初始化操作,对资源消耗很大public class SingleTest { public static final SingleTest singleTest1=new Si原创 2017-08-15 18:37:12 · 265 阅读 · 0 评论 -
Android设计模式之(13)----迭代器模式
迭代器模式迭代器模式属于行为模式.主要用于解决对一个聚合对象中的所有元素的获取,但是同时又不会暴露该对象的内部细节。主要分为迭代器接口,具体实现迭代器,容器,具体实现的容器使用场景访问一个对象内部的元素而不暴露内部细节要获取多个对象的内部元素,提供统一的接口访问代码示例(一) 迭代器接口public interface Iterator { boolean hasNext();原创 2017-08-28 17:02:32 · 221 阅读 · 0 评论 -
Android设计模式之(14)----模板模式
模板模式模板模式属于行为模式.简单理解,某一套程序的流程是不改变的,但是具体的内容是可以更改的。例如公司的财务报表,需要进行申请,然后经理签字以后才可以审批下来。流程:下属财务资金审核提交—->经理审核—->经理签字—->审批完成 内容:有2个人去申请资金,他们执行的流程是一样的,但是具体申请的资金以及经理审批后给予的资金是作为内容可以改变的。使用场景虚公用方法通用流程抽象到父类,由子类完成具原创 2017-08-29 15:27:08 · 300 阅读 · 0 评论 -
Android设计模式之(16)----中介模式
中介模式中介模式属于行为模式。理解起来很简单,例如公司新接了好几个项目,那如何告诉公司的各位同学要负责项目是哪一个呢呢,不可能一个人一个人的互相转达这个时候为了统一通知,就采用公司的企业邮箱统一发送放假消息到各个同学的个人企业邮箱来进行通知这时公司的企业邮箱就充当了一个中介者的角色.对比两种情况:没有中介者的情况通过公司邮箱终结者 应用场景多个对象之间存在相互通信关系多个对象彼此依赖,后续希望原创 2017-08-30 16:30:09 · 250 阅读 · 0 评论 -
Android设计模式之(15)----访问者模式
访问者模式访问者模式属于行为模式。访问者模式中属于相对比较复杂的一类,它会在A中让B访问,而实际在B中实际调用的是A的方法.class A { public void method1(){ System.out.println("AAAAAA"); } public void method2(B b){ b.showA(this); }原创 2017-08-30 12:42:24 · 276 阅读 · 0 评论 -
Android设计模式之(17)----代理模式
代理模式代理模式属于结构型模式.分为静态代理与动态代理.比如说 用户现在要买车,只要一辆车直接去车商买,肯定不会卖给你啊.这个时候用户就会找到4S店让4S店帮忙购买,在从4S那儿买到车子.在整个交易过程中4S的存在就是一个代理商,用户作为委托者,代理商帮委托者完成委托者的述求.应用场景为一个对象的引用提供额外操作控制一个对象的访问,为不同的用户提供不同的权限级别被访问对象不想暴露所有细节方法,原创 2017-08-31 16:18:49 · 217 阅读 · 0 评论 -
Android设计模式之(5)----抽象工厂模式
抽象工厂模式一个抽象的接口可以实现多个产品一个抽象工厂可以实现多个具体工厂例:一个公司有多个程序猿,有多个产品经理,那么程序猿下面分为Android,iOS,PHP等程序猿,产品经理也分为多个类型。在之前的工厂模式中已经建立了程序猿,这个时候在造一个产品,这个产品其实就是产品经理的角色。1.建立产品经理的接口public interface ProductManager { public原创 2017-08-17 09:49:55 · 324 阅读 · 0 评论 -
Android设计模式之(6)----策略模式
策略模式一个功能的效果,有不同的算法与策略,根据不同的选择选择不同的结果。简单来说,只要你写过程序就用过策略模式,不要说没用过,难道if-else(switch)没用过吗…..if-else在其实就是一个策略模式的体现,根据不同的选择处理不同的结果。问题如果把所有的方法全部用if-else(switch)来处理,从功能上说没问题,但是冲代码层面的维护与使用来说,if-else多了之后会让类变的过于庞原创 2017-08-18 11:25:40 · 253 阅读 · 0 评论 -
Android设计模式之(9)----解释器模式
解释器模式解释器模式属于行为模式。 提供接口,实现了一个表达式接口,用来解释具体的上下文联系。应用场景(java android里很少用到)多次重复出现的问题,可以用具体的语言表达解释简单的特定的需要进行描述解释的行为语言模式代码示例比如特定的三辆车,奔驰GLK,宝马X5,奥迪R8,保时捷911保时捷911和奥迪R8都属于跑车奔驰GLK是否属于奔驰系列的SUV,而宝马X5不属于奔驰系列的SU原创 2017-08-22 16:02:55 · 256 阅读 · 0 评论 -
Android设计模式之(19)----组合模式
组合模式组合模式属于结构型设计模式.组合模式又可叫做【部分-整体】模式.它将部分与整体的关系通过树的形式表现出来.分为安全模式与透明模式.常规的数上会有各种枝干树枝与树叶,树干的每一个分叉点则理解为一个子节点,而树叶则认为是末节点, 将树枝也树叶理解为每一个部分,所有的部分组合起来就是一个整体.比如城市: - 四川省–成都市-成都 - 四川省–绵阳市-绵阳组合模式将使单个具体的对象与整体对象具原创 2017-09-04 11:10:52 · 276 阅读 · 0 评论 -
Android设计模式之(20)----装饰器模式
装饰器模式装饰器模式属于结构型设计模式.可以动态将需要修改的内容添加到原有的被装饰类上.例如:网游中的游戏人物,佩戴的装备有头盔/衣服/下装/武器/鞋子等等。头盔/衣服/下装/武器/鞋子等又有不同的属性.这时你会怎么做呢?常规的设计一个超类进行set/get方法,然后算出不同的组合的方法?如果这么做,就等着加班吧,当你加班完成后又来了新需求…每个装备还有不同的颜色…甚至在后来要求可以让玩家自行搭配颜原创 2017-09-04 16:03:07 · 326 阅读 · 0 评论 -
Android设计模式之(21)----外观模式
外观模式外观模式属于结构型设计模式.简单来说外观模式就是一个比较牛逼的封装理解而已.将一系列的操作,功能封装在一起,供外部调用,外部调用者不关心内部实现细节.比如常规开发中的网络框架封装,会定义一个顶层的类,将一系列的请求方法,缓存处理,tag标识等全部封装在一个类暴露方法给外部使用者调用,这样即便在后期我们更换了网络框架,所修改的也仅仅只是最顶层的类,而不会影响到外部的调用.应用场景为复杂的模块原创 2017-09-05 11:21:16 · 226 阅读 · 0 评论 -
Android设计模式之(22)----桥接模式
桥接模式桥接模式属于结构型模式.主要用于将抽象化与具体实现化解耦,无乱抽象化的扩展变化或者实现化的扩展变化都不会影响互相影响.将各自的耦合解除.举例:现在有3个人,青年人/中年人/老年人,他们喜欢的食物口味有3种,甜味/麻辣味/清淡味.常规设计怎么样做?设计3个类ABC分别代表青年人/中年人/老年人,QWE3个类代表甜味/麻辣味/清淡味. 具体的实现有很多种比如A+Q=青年人喜欢甜的口味A+W=青原创 2017-09-05 15:49:55 · 433 阅读 · 0 评论 -
Android设计模式之(23)----享元模式
享元模式享元模式属于结构型模式.主要用于解决系统中存在的内存性能消耗等问题.当项目中存在多个同一个对象的时候,对象的回收创建成本不断增加,导致内存性能等问题,使用享元模式将减少内存消耗,在相同的对象上可以有不同的状态处理内部与外部状态.内部状态 内部状态属于可以共享的,不会随着环境改变而改变,在构造参数进行构造或者set外部状态 外部状态属于不可共享的,随着环境改变而改变.对于内部状态与外原创 2017-09-05 18:41:50 · 338 阅读 · 0 评论 -
Android设计模式之(11)----观察者模式
观察者模式观察者模式属于行为模式。主要用于解耦观察者与被观察者之间的联系。实现观察者一对一或者一对多的关系,当被观察者有状态改变的时候通知观察者,观察者根据改变的状态做出相应的事件动作。使用场景消息队列,事件总线情况数据状态更新,对象变化对象行为关联变化代码示例观察者与被观察者用接口实现具体方法。(一) 观察者刷新接口public interface ObserverListener {原创 2017-08-24 10:55:01 · 206 阅读 · 0 评论 -
Android设计模式之(10)----命令模式
命令模式命令模式属于行为模式。如你的上级领导指派给你的A,B,C三项任务。让你做A,你就做A,让你做B就做B。指哪打哪。 外部的人对于你和你的领导来说,知道你的领导派发了ABC任务给你,你也完成ABC任务,任务具体是怎么完成的外部的人并不需要关心。使用场景某一对象有一系列的事物操作具有抽象行为的动作,支持多种类型的操作代码示例大学的新生入学都会进行军训,军训的项目有正步,齐步,军姿等等… 而这原创 2017-08-23 14:02:19 · 389 阅读 · 0 评论 -
Android设计模式之(8)----责任链模式
责任链模式责任链模式一般分为处理者与请求者。具体的处理者分别处理请求者的行为。Android中的时间分发机制就属于一种责任链模式,父View包含N个子View,如果父View不处理的内容就会分发到具体的子View上进行,直到处理为止。应用场景处理者不明确的情况下,提交了一条任务多个请求者请求行为一样,交由处理中处理代码示例列如小说中经常有一系列赏金任务,分为普通难度,中等难度,高等难度的任务,原创 2017-08-21 10:38:33 · 222 阅读 · 0 评论 -
Android设计模式之(7)----状态模式
状态模式所谓状态模式,就是代表一个事物有多个状态。因为状态的变化而导致一系列的变化。听起来和策略模式很相似,都是类似if-else,实际上策略模式侧重于算法的区别,而 状态模式梗看着行为的控制。应用场景同一个产品,有多个状态产生多个行为有明显的状态区别优点:代码结构清晰,逻辑流程完善。将状态行为和结果封装在同一个具体实现类中,易维护阅读,若有新增状态,只需要增加具体的状态以及行为状态以及得到原创 2017-08-19 11:21:13 · 243 阅读 · 0 评论 -
Android设计模式之(18)----适配器模式
适配器模式适配器模式数据结构型设计模式.适配器模式主要用于将2个不能兼容的物件结合在一起.分为类适配器和对象适配器.比如由于2个类因为接口问题没办法在一起工作,可以使用适配器模式将其结合起来.比如生活中的电源适配器,A物品需要100V电压,B物品需要220V电压,直接作用其中有一个无法达到效果,而电源适配器支持100~220V就可以完美解决这样的问题.应用场景重构过程中要具体使用当前某个类,但是因原创 2017-09-01 10:44:26 · 213 阅读 · 0 评论