Android - DesignModel
C虾仔
一步两步,一步两步......
展开
-
C虾仔笔记 - 迭代器模式
迭代器模式提供一种方法顺序访问一个集合对象中各个元素, 又无须暴露该对象的内部表示。把在元素之间游走的责任交给迭代器,而不是集合对象。分离了集合对象的遍历行为,抽象出一个迭代器类来负责遍历行为。这样既不暴露集合的内部结构,又让外部代码透明地访问集合内部的数据。实例:用来遍历数据查询结果的Cursor游标对象。...原创 2018-06-10 21:32:49 · 200 阅读 · 0 评论 -
C虾仔笔记 - 备忘录模式
备忘录模式在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便在必要时恢复对象的这些状态。要实现了信息的封装,使得用户不需要关心状态的保存细节。给用户提供了一种可以恢复状态的机制,允许用户取消不确定或者错误的操作,使用户能够比较方便地回到某个历史的状态。但是要消耗资源,特别是成员变量比较多的情况。为了节约内存,可使用原型模式+备忘录模式。实例:Activity中的onSa...原创 2018-06-10 20:55:07 · 165 阅读 · 0 评论 -
C虾仔笔记 - 观察者模式
观察者模式对象间存在一对多关系。当一个对象发生改变时,则所有依赖于它的对象都会得到通知并被自动更新。该模式易用和低耦合,保证高度的协作。一般用ArrayList 来存放观察者们。在该触发机制中,观察者和被观察者是抽象耦合的(低耦合)。但是,如果观察者太多的话,也会显得比较耗时。为了避免观察者出错会导致系统卡死,观察值一般采用异步方式执行程序。实例:ListView与Adapter(notifyDa...原创 2018-06-10 19:08:13 · 160 阅读 · 0 评论 -
C虾仔笔记 - 命令模式
命令模式请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该相应的对象执行命令。(调用者→接受者→命令)抽象出待执行的动作,然后以参数的形式提供出来,用不同的请求对客户进行参数化。类似于过程设计中的回调机制。用于在不同的时刻指定、排列和执行请求;需要支持取消操作;需要支持事务处理操作。实例:PackageManagerService实现...原创 2018-06-10 18:33:14 · 149 阅读 · 0 评论 -
C虾仔笔记 - 解释器模式
解释器模式将复杂的文法规则分离为简单的功能进行解释,将其组合成一颗抽象语法树进行解释执行。通常采用递归调用方法进行解释。易于实现简单文法,难以维护复杂文法。实例:1、PackageParser与AndroidManifest.xml。2、SQL解析。3、计算器符号处理。...原创 2018-06-10 17:46:13 · 131 阅读 · 0 评论 -
C虾仔笔记 - 状态模式
状态模式让一个对象在其内部状态改变时,其行为也随之改变。不同的状态有不同的行为。这些行为是平行的、不可替换的,被包装在不同状态对象中。将所有与某个状态有关的行为放到一个类中,并且可以方便地增加新的状态,只需要改变对象状态即可改变对象的行为。可以将状态转换逻辑与状态对象合成一体,替代了某一个巨大的条件语句块。在行为受状态约束的时候使用状态模式。实例:Android中的WiFi管理。...原创 2018-06-10 16:55:56 · 150 阅读 · 0 评论 -
C虾仔笔记 - 策略模式
策略模式定义了一系列算法(行为),并挨个将算法封装起来,使它们在运行时可以动态更改。在使用if-else语句感觉复杂和难以维护时,将这些算法封装成类。这样,算法可自由切换,避免用多重条件判断,扩展性较好。实例:Android动画中的 TimeInterpolator和布局中的LayoutManager。...原创 2018-06-10 16:22:16 · 139 阅读 · 0 评论 -
C虾仔笔记 - 中介者模式
中介者模式将多个形成网状结构、存在大量关联关系的对象,进行解耦,用一个中介对象来封装它们的交互而形成网状结构。实例:MVC框架中,C就是M和V的中介者。Android中的KeyguardViewMediator。...原创 2018-06-15 23:37:26 · 212 阅读 · 0 评论 -
C虾仔笔记 - 访问者模式
访问者模式将稳定的数据结构和易变的操作分离(解耦)。将数据结构封装为被访问者,数据操作封装为访问者。在被访问者的类里面加一个对外提供接待访问者的接口。如果对数据结构中的对象进行很多不同的并且不相关的操作,而且不想让这些操作"污染"这个数据结构;或者遍历一个存有不同类型对象的数据结构,就考虑是否要使用访问者模式。如果不用访问者模式,又想对不同的元素进行不同的操作,很可能要使用if-else和类型转换...原创 2018-06-15 16:56:27 · 188 阅读 · 0 评论 -
C虾仔笔记 - 原型模式
原型模式一个以已经存在的对象为原始样板来创建新对象的模式。“克隆”创建复杂或构造起来比较耗时的实例时,复制一个已经存在的对象可为程序节省资源,让程序运行流畅些。实例:Intent。...原创 2018-06-05 23:21:28 · 167 阅读 · 0 评论 -
C虾仔笔记 - Builder模式
Builder模式将构建复杂对象的过程和它的部件解耦,使得该对象的构建过程和部件的表示隔离开来。实例:AlertDialog。原创 2018-06-05 22:01:46 · 148 阅读 · 0 评论 -
C虾仔笔记 - 单例模式
单例模式保证一个类仅有一个实例,该类自行实例化并向整个系统提供该实例。若创建某个对象要消耗大量资源,可考虑使用单例模式。实例:(1)LayoutInflater.from(Context)(2)ImageLoader.getInstance()...原创 2018-06-04 22:38:56 · 173 阅读 · 0 评论 -
C虾仔笔记 - 责任链模式
责任链模式链式结构的每个节点都能被拆开在连接,具有较好的灵活性。将链式结构的节点看作对象,每个对象拥有不同的处理逻辑,讲一个请求从某个节点出发,沿着连式结构的某一个方向的路径,传递给下一个邻近的节点对象,直到这个请求某个节点对象被处理为止。实例:Android应用对事件的分发处理。每当用户触屏时,对应的事件被Android包装成事件对象,从上往下有从下往上分发传递,直到这个事件被处理为止。...原创 2018-06-03 22:14:34 · 162 阅读 · 0 评论 -
C虾仔笔记 - 组合模式
组合模式:将对象组合成树形结构,表现为”部分-整体“、“内容-容器”的层次结构,使得客户能以一致的方式处理组合的对象。同族化的成分(Component):为所有组合的对象提供统一的接口。原子性的叶子(Leaf):在组合中表示末端的子节点对象,不能延伸出其他节点。使合成的树干(Composite):在组合中表示可容纳、延伸的所有其他节点。 ...原创 2018-06-03 17:04:10 · 152 阅读 · 0 评论 -
C虾仔笔记 - 模板模式
模板模式构建一个算法框架,将某些可能会变的步骤延迟交给子类中实现。使得子类在不改变这个算法框架的前提下,实现该算法矿建中会变的步骤。封装不变部分,扩展可变部分。提取公共代码,便于维护行为由父类控制,子类实现。因此,有多个子类共有的方法,且逻辑相同。重要的、复杂的方法,可考虑作为模板方法。注意,为防止恶意操作,模板方法可考虑加上 final 关键字。实例:AsyncTask对象调用execute方法...原创 2018-06-10 22:19:58 · 174 阅读 · 0 评论