
Android设计模式
文章平均质量分 61
今阳
公众号:今阳说
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Android设计模式-23-桥接模式
1. 定义将抽象部分与实现部分解耦,使他们都可以独立的进行变化 又称桥梁模式,柄体模式2. 使用场景:任何多维度变化类或者多个树状类之间的耦合都可以使用桥接模式来实现解耦需要在抽象化角色与具体化角色间增加更多灵活性,避免建立静态的继承联系 不希望使用继承或由于多层次继承导致系统类的个数急剧增加时 一个类存在两个独立变化的维度,且这两个维度都需要进行扩展3. 优缺点优点:抽象和实现的分离 优秀的扩展能力 实现细节对客户透明缺点:桥接模式的引入会增加系统的理解与设计难度,由于聚原创 2021-03-11 10:54:07 · 266 阅读 · 0 评论 -
Android设计模式-22-外观模式
1. 定义隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口 通过创建一个统一的类,用来包装子系统中一个或多个复杂的类 (由外观类去保存各个子系统的引用,实现由一个统一的外观类去包装多个子系统类,然而客户端只需要引用这个外观类,然后由外观类来调用各个子系统中的方法)2. 使用场景1. 为复杂的模块或子系统提供外界访问的接口2. 子系统相对独立3. 预防低水平人员带来的风险3. 优缺点优点: 1. 降低了客户类与子系统类的耦合度,实现松耦合关系2. 对客户屏蔽了子系原创 2021-02-01 09:27:25 · 149 阅读 · 0 评论 -
Android设计模式-21-享元模式
1. 定义运用共享技术有效的支持大量细粒度的对象2. 使用场景系统中存在大量的相似对象 细粒度的对象都具备较接近的外部状态,而内部状态与环境无关,也就是说对象没有特定身份 需要缓冲池的场景3. 优缺点优点: 大幅度降低内存中对象的数量,提升性能减少内存 缺点: 为了使对象可以共享,需要将一些状态外部化,使得程序逻辑复杂化,而且读取外部状态使得运行时间稍微变长4. Android源码中的使用我们平时使用的Handler中的getPostMessage所得到的message对象原创 2021-01-29 09:11:20 · 195 阅读 · 0 评论 -
Android设计模式-20-装饰模式
1. 定义也叫包装模式 动态的给一个对象添加一下额外的职责,就增加功能来说,装饰模式相比生成子类更为灵活 使用一种对客户端透明的方式来动态的扩展对象的功能,也是继承关系的一种替代方案 与代理模式的区别:装饰模式是为所装饰的对象增强功能;代理模式则是对代理的对象施加控制,但不对对象本身的功能进行增强;2. 使用场景需要透明且动态的扩张类的功能时 动态增加,动态撤销3. 优缺点优点:动态扩展一个实现类的功能,装饰类和被装饰类可以独立发展,不会相互耦合 缺点:多层装饰比较复杂4. An原创 2021-01-28 08:52:33 · 219 阅读 · 0 评论 -
Android设计模式-19-适配器模式
1. 定义定义一个包装类,用于包装不兼容接口的对象 将一个类的接口转换成客户希望的另外一个接口 适配器模式的形式分为:类的适配器模式(继承) & 对象的适配器模式(代理) & 缺省适配器模式(抽象类)2. 应用场景原本由于接口不兼容而不能一起工作的那些类需要在一起工作3. 优缺点优点:可以让任何两个没有关联的类一起运行 提高了类的复用 增加了类的透明度 灵活性好缺点:过多地使用适配器,会让系统非常零乱 由于 java的单继承,至多只能适配一个适配者类,而且目原创 2021-01-27 11:41:16 · 157 阅读 · 1 评论 -
Android设计模式-18-组合模式
1.定义也叫部分整体模式;将对象组合成树形结构以表示 “部分-整体” 的层次结构,使得用户对单个对象和组合对象的使用具有一致性;2. 使用场景:部分、整体场景,如树形菜单,文件、文件夹的管理等3. 优缺点优点:清楚的定义分层次的复杂对象, 表示对象的全部或部分层次,让高层模块忽略了层次的差异,方便对整个层次结构进行控制 高层模块可以一致的使用一个组合结构或其中单个对象,不必关心处理的是单个对象还是整个组合结构,简化了高层模块的代码 增加新的枝干构件和叶子构件都很方便,无需对现有原创 2021-01-26 09:11:06 · 388 阅读 · 0 评论 -
Android设计模式-17-代理模式
1. 定义也称委托模式,间接访问目标对象, 分为静态代理和动态代理 给目标对象提供一个代理对象,并由代理对象控制对目标对象的引用2. 使用场景无法访问或者不想直接访问目标对象时 按职责来划分,通常有以下使用场景:1. 远程代理:为一个对象在不同的地址空间提供局部代表隐藏一个对象存在于不同地址空间的事实;远程机器可能具有更好的计算性能与处理速度,可以快速响应并处理客户端请求;2. 虚拟代理:通过使用一个小的对象代理一个大对象目的:减少系统的开销;3. 保护代理:控制目标对象的访问,给原创 2021-01-25 10:16:57 · 219 阅读 · 0 评论 -
Android设计模式-16-中介者模式
1. 定义又称:调解者/调停者模式 包装了一系列对象相互作用的方式,用来降低这些对象之间的通信复杂性,从中协调充当牵线搭桥的作用2. 使用场景系统中对象之间存在比较复杂的引用关系,导致它们之间的依赖关系结构混乱,而且难以复用该对象 想通过一个中间类来封装多个类中的行为,而又不想生成太多的子类3. 优缺点优点:使得这些对象不必相互明显作用,从而实现松耦合 当某些对象之间的作用发生改变时,不会影响其他对象,保证独立变化 将多对多的相互作用转化为一对多的相互作用,由复杂的网状结构变为以中原创 2021-01-22 09:22:26 · 182 阅读 · 0 评论 -
Android设计模式-15-访问者模式
1. 定义封装一些作用于某种数据结构中的各元素的操作,它可以在不改变这个数据结构的前提下定义作用于这些元素的新的操作 将数据操作与数据结构分离2. 使用场景对象结构比较稳定,但经常需要在此对象结构上定义新的操作 需要对一个对象结构中的对象进行很多不同的并且不相关的操作,而需要避免这些操作污染这些对象的类,也不希望在增加新操作时修改这些类3. 优缺点优点:符合单一职责原则 优秀的扩展性 灵活性缺点:具体元素对访问者公布细节,违反了迪米特原则 具体元素变更比较困难 违反了依赖倒原创 2021-01-21 09:17:33 · 139 阅读 · 0 评论 -
Android设计模式-14-模板方法模式
1. 定义定义一个模板结构(框架,关键步骤,固定流程),将具体内容延迟到子类去实现,基于“继承”2. 应用场景1. 有多个子类共有的方法,且逻辑相同2. 重要的、复杂的方法,可以考虑作为模板方法3. 优缺点优点:提高代码复用性 将相同部分的代码放在抽象的父类中,而将不同的代码放入不同的子类中 实现了反向控制 通过一个父类调用其子类的操作,通过对子类的具体实现扩展不同的行为,实现了反向控制 & 符合“开闭原则”(1.封装不变部分,扩展可变部分;2. 行为由父类控制,子类原创 2021-01-20 09:07:03 · 89 阅读 · 0 评论 -
Android设计模式-13-迭代器模式
1. 定义提供一种方法顺序访问一个容器对象中的各个元素,而又不需要暴露该对象的内部表示, 又称游标(Cursor)模式2. 使用场景访问一个聚合对象的内容而无须暴露它的内部表示 需要为聚合对象提供多种遍历方式 为遍历不同的聚合结构提供一个统一的接口3. 优缺点优点:它支持以不同的方式遍历一个聚合对象 迭代器简化了聚合类 在同一个聚合上可以有多个遍历 在迭代器模式中,增加新的聚合类和迭代器类都很方便,无须修改原有代码缺点: 由于迭代器模式将存储数据和遍历数据的职责分离,增加新的原创 2021-01-19 18:34:51 · 153 阅读 · 0 评论 -
Android设计模式-12-备忘录模式
1. 定义在不破坏封闭的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样以后就可以将该对象恢复到原先保存的状态。2. 使用场景需要保存/恢复数据的相关状态场景 需要提供一个可回滚的操作3. 优缺点优点:提供可以恢复状态的机制 实现了信息的封装,不用关心保存状态的细节缺点:消耗资源(如果类的成员变量过多,每次保存都会消耗一定的内存)4. Android源码中的使用:Activity的onSaveInstanceState(),onRestoreInsta原创 2021-01-15 09:27:42 · 178 阅读 · 0 评论 -
Android设计模式-11-观察者模式
1. 定义定义对象间一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并被自动更新2. 使用场景:关联行为,事件多级触发,跨系统的消息交换(消息队列,事件总线)等 常用于GUI系统,订阅发布系统3. 优缺点优点:解耦,减小依赖性,灵活,可扩展 缺点:开发和运行效率,一对多调试比较复杂,而且java中的消息通知是默认顺序执行的, 一个观察者卡顿,会影响整体的执行效率,这种情况下一般要考虑异步方式4. Android源码中的使用Observer,Obse原创 2021-01-14 10:50:41 · 144 阅读 · 0 评论 -
Android设计模式-10-命令模式
1. 定义将一个请求封装成一个对象,从而让用户使用不同的请求把客户端参数化; 对请求排队或者记录请求日志,以及支持可撤销的操作 是回调机制的一个面向对象的替代品,将行为调用者与实现者解耦2. 使用场景认为是命令的地方都可以使用命令模式,比如:1. GUI 中每一个按钮都是一条命令。2. 模拟 CMD3. 优缺点优点: 1. 降低了系统耦合度2. 新的命令可以很容易添加到系统中去 缺点: 使用命令模式可能会导致某些系统有过多的具体命令类4. 在Android源码中的...原创 2021-01-13 17:59:56 · 166 阅读 · 0 评论 -
Android设计模式-9-解释器模式
1. 定义通过定义一个表达式接口,解释特定的上下文.本质:将复杂的问题简单化,模块化,分离实现,解释执行2. 使用场景如果某个简单的语言需要解释执行而且可以将该语言中的语句表示为一个抽象的语法树时某些特性的领域出现不断重复的问题时,可以将该领域的问题转化为语法规则下的语句,然后构建解释器来解释该语句,例如英文的大小写转换3. 优缺点优点:1. 灵活的扩展性,扩展延伸时只需增加新的解释器2. 易于实现的文法缺点:1. 生成的大量类可能造成后期维护困难;2. 对于原创 2021-01-08 09:29:19 · 227 阅读 · 1 评论 -
EffectiveJava-3-类和接口
使类和成员的可访问性最小化- 封装(信息隐藏):隐藏实现细节,将它的API与内部实现隔离,降低模块间的耦合性,易于独立开发,测试,优化等,提高软件的可重用性,- 访问控制的方式:使用访问修饰符(private,public,protected)- 尽可能的使每个类或者成员不能被外界访问- 不能为了方便测试,而将类,接口或者成员变成包的导出API的一部分(即不要将权限大于package-private(default))- 包含公有可变域的类不是线程安全的,即 public &&a原创 2021-01-07 09:26:53 · 211 阅读 · 0 评论 -
Android设计模式-8-责任链模式
1. 定义将一个请求从链式的首端发出,沿着链的路径依次传递给每个节点对象,直到有对象处理这个请求为止,使多个对象都有机会处理请求,从而避免了请求发送者与接收者之间的耦合关系,使编程更有灵活性。2. 使用场景1. 有多个对象可以处理同一个请求,具体哪个对象处理该请求由运行时刻自动确定;2. 在不明确指定接收者的情况下,向多个对象中的一个提交一个请求;3. 可动态指定一组对象处理请求。3. 优缺点优点:1. 降低耦合度,将请求的发送者和接收者解耦;2. 简化了对象,使对象不需原创 2021-01-07 09:24:48 · 196 阅读 · 0 评论 -
Android设计模式-7-状态模式
1. 定义:当一个对象的内在状态改变时,其行为也随之改变2. 适用场景:一个对象的行为取决于它的状态,并且它必须在运行时刻根据状态改变它的行为。一个操作中含有庞大的多分支结构,并且这些分支决定于对象的状态。3. 优缺点:优点:将繁琐的状态判断转换成结构清晰的状态类族,在避免代码膨胀的同时也保证了可扩展性和可维护性缺点:会增加系统类和对象的个数4. android源码中的使用WifiSettings中wifi的不同状态5. 实例演示以电视遥控器为例,分为开机原创 2021-01-06 10:22:42 · 136 阅读 · 0 评论 -
Android设计模式-6-策略模式
1.定义:定义一系列的算法,并将每一个算法封装起来,而且使他们可以相互替换,让算法独立于使用它的客户而独立变化。2.应用场景:多个类只区别在表现行为不同,可以在运行时动态选择具体要执行的行为。需要在不同情况下使用不同的策略(算法),或者策略还可能在未来用其它方式来实现。对客户隐藏具体策略(算法)的实现细节,彼此完全独立。3. 优缺点优点:1.策略类之间可以自由切换,由于策略类都实现同一个接口,所以使它们之间可以自由切换。2.易于扩展,增加一个新的策略只需要添加一个具体的策原创 2021-01-05 14:08:56 · 298 阅读 · 0 评论 -
Android设计模式-5-抽象工厂模式
1. 定义:提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类;由具体的工厂负责实现具体的产品实例。与工厂方法模式最大的区别:抽象工厂中每个工厂可以创建多种类的产品;而工厂方法每个工厂只能创建一类可以理解为工厂模式只有一个维度,就是同一产品类下的不同产品;而抽象工厂模式有两个维度,不同的产品族和每个产品族下不同的产品2. 优缺点优点:降低耦合,将具体产品的创建延迟到具体工厂的子类中易于扩展,新增一种产品时,只需要增加相应的具体产品类和相应的工厂子类即原创 2021-01-04 11:08:46 · 141 阅读 · 0 评论 -
Android设计模式 - 4 - 工厂模式
简单工厂模式1. 定义:属于创建型模式,又叫做静态工厂方法,但不属于23种GOF设计模式之一。由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。将“类实例化的操作”与“使用对象的操作”分开,让使用者不用知道具体参数就可以实例化出所需要的“产品”类,从而避免了在客户端代码中显式指定,实现了解耦。2. 适用场景:工厂类负责创建的对象比较少;客户只知道传入工厂类的参数,对于如何创建对象(逻辑)不关心;由于简单工厂原创 2020-12-30 09:21:01 · 168 阅读 · 0 评论 -
Android设计模式-3-原型模式
1. 定义:用原型实例指定创建对象的种类,并通过拷贝这些原型对象创建新的对象,使程序更高效,关键词:样板,克隆,可定制2. 适用场景:类初始化需要消耗非常多的资源类的创建复杂或构造耗时保护性拷贝: 一个对象提供给其他对象访问,且各个调用者可能都会修改其值,可以使用原型模式拷贝多个对象供其使用,可以使用Cloneable接口3. 优缺点:优点:对内存中的二进制流的拷贝,比new性能好,尤其是循环体内产生大量对象时缺点:其优点也是缺点,直接在内存中拷贝,不执行构造函数,少了约束4. A原创 2020-12-29 09:31:33 · 131 阅读 · 0 评论 -
Android设计模式-2-建造者模式
1. 定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示在用户不知道对象的建造过程和细节的情况下,可以直接创建复杂的对象。2. 优缺点优点:隐藏复杂的实现细节,易于解耦,方便扩展缺点:当产品内部变化复杂,产品间差异较大时,不适合使用建造者模式3. Android源码中的体现AlertDialog,Notification的Builder,StringBuilder, StringBuffer 等,这些都是我们日常开发中经常会用到的4. 实例原创 2020-12-28 09:52:10 · 205 阅读 · 0 评论 -
Android设计模式-1-单例模式
1. 定义:确保1个类只有1个实例化对象 ,提供一个全局访问点2. 优缺点优点:客户端使用单例模式的实例的时候,只需要调用一个单一的方法即可生成一个唯一的实例,有利于节约资源。缺点:首先单例模式很难实现序列化,这就导致采用单例模式的类很难被持久化,当然也很难通过网络传输;其次由于单例采用静态方法,无法在继承结构中使用。3. android源码中的体现:例如,加载布局时经常要创建LayoutInflater的实例,常见的有三种方法: - getLayoutInflater() - Layo原创 2020-12-25 11:13:53 · 188 阅读 · 0 评论 -
Android设计模式 - 分类&设计原则
1.定义:设计模式是一套被反复使用、多数人知晓、经过分类的、代码设计经验的总结。2.目的:为了提高代码可重用性、让代码更容易被他人理解、保证代码可靠性, 使代码编写真正工程化, 是软件工程的基石脉络3.分类:常用的设计模式有23种,可分为三大类:(1)创建型:共五种,工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。(2) 结构型:共七种,适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。(3)行为型:共十一种,策略模式、模板方法模式、观察者模式、迭代子模式原创 2020-12-25 11:06:03 · 192 阅读 · 0 评论