android设计模式
LBJFxd
一只爬向山顶的野生程序猿
展开
-
程序设计六大原则
1.单一职责简单来说单一职责就是一个类只负责一个功能。更加具体的说就是对一个类而言,应该是一组相关性很高的函数、数据的封装,是高内聚低耦合的,对外界而言应该仅有一个引起它变化的原因。单一职责在项目中的使用:1.项目中的新手引导变量的管理可以统一在各自的Modle中用单独的类来管理2.MVP模式P层生命周期与V层生命周期的同步可以用单独的包装类来实现,3.各种基础框架功能的定义,例如:图片的加载、缓存原创 2017-12-24 22:57:20 · 20643 阅读 · 3 评论 -
设计模式—代理模式
定义为其他对象提供一种代理以控制对这个对象的访问使用场景当无法或不想直接访问某个对象或者访问某个对象存在困难时可以通过一个代理对象来间接访问,为了保证客户端使用的透明性,委托对象与代理对象需要实现相同的接口关键点一个抽象角色—声明具体对象和代理对象共同的接口方法为抽象类或者接口,被访问对象和代理对象均实现该方法一个具体对象角色—被委托对象或被代理对象,执行具体的业务逻辑方法原创 2018-01-30 19:10:37 · 206 阅读 · 0 评论 -
设计模式—访问者模式
简介访问者模式是一种将数据操作与数据结构分离的设计模式,基本思想是软件系统中拥有一个由许多对象构成的、比较稳定的对象结构,这些对象都拥有一个accept方法用来接受访问者对象的访问。访问者是一个接口,拥有一个visit方法,这个方法对访问到的对象结构中不同类型的元素做出不同的处理。定义封装一些作用于某种数据结构中的各元素的操作,它可以在不改变这个数据结构的前提下定义这些元素的新的操作。使用场景对象结原创 2018-01-23 23:18:53 · 208 阅读 · 0 评论 -
设计模式—备忘录模式
简介备忘录模式是一种行为模式,该模式用于保存对象当前状态,并且在之后可以再次恢复到此状态。备忘录模式实现的方式需要保证被保存的对象状态不能被对象从外部访问,目的是为了保护好被保存的这些对象状态的完整性以及内部实现不向外暴露。定义在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样,以后就可将该对象恢复到原先的状态。关键点一个原始数据对象,负责创建一个备忘录,可以记录、恢复自原创 2018-01-16 23:10:20 · 263 阅读 · 0 评论 -
设计模式—适配器模式
定义适配器模式把一个类的接口转换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法一起工作的的两个类能够在一起工作使用场景系统需要使用现有的类,而此类的接口不符合系统的需要,即接口不兼容想要建立一个可以重复使用的类,用于与一些彼此之间没有太大关联的一些类,包括一些可能在将来引进的类一起工作需要一个统一的输出接口,而输入端的类型不可预知关键点一个目标角色—所期待得到的接口一个需要被转换的角色—需原创 2018-01-31 21:54:39 · 225 阅读 · 0 评论 -
设计模式—装饰模式
定义动态的给一个对象添加一些额外的职责,就增加功能来说,装饰模式生成子类更灵活。使用场景需要透明且动态的扩展类的功能时关键点一个抽象组件角色—接口或抽象类,被装饰的原始对象一个或多个具体组件—抽象组件的具体实现,被装饰的具体对象一个抽象装饰角色—抽象类,装饰组件对像,持有组件对象引用一个或多个具体装饰类—对抽象装饰者的具体实现实现/** * 抽象组件 */public abstract cla原创 2018-01-31 22:31:35 · 220 阅读 · 0 评论 -
设计模式—中介者模式
定义中介者模式包装了一系列对象相互作用的方式,使得这些对象不必相互明显作用。从而可以使他们可以松散耦合。当某些对象之间的作用发生改变时,不会立即影响其他的一些对象之间的作用。从而保证这些作用可以彼此独立变化。中介者模式将多对多的相互作用转化为一对多的相互作用。中介者模式将对象的行为和协作抽象化,把对象在小尺度的行为上与其他对象的相互作用分开处理。使用场景当对象之间的交互操作很多且每个对象的行为操作都原创 2018-01-24 23:26:21 · 165 阅读 · 0 评论 -
设计模式—享元模式
简介享元模式时对象池的一种实现,用来尽可能减少内存的使用量,适合用于可能存在大量重复对象的场景,来缓存可共享的对象,达到对象共享、避免创建过多对象的效果,这样就可以有效的提升性能、避免内存移除等。享元对象中的部分状态是可以共享的,可以共享的状态称之为内部状态,内部状态不会随着环境变化,不可共享的状态称之为外部状态,他们会随着环境的改变而改变,。在享元模式中会建立一个容器为map,它的键是享元对象的内原创 2018-02-01 23:22:56 · 232 阅读 · 0 评论 -
设计模式—迭代器模式
简介 作为开发者,势必会涉及到容器的操作,比如Java中的List、Map等,对容器的访问必然会涉及到遍历算法,如果将对容器的遍历封装在容器内部,对容器而言就承担了过多的功能,容器类不仅要维护自身内部的数据元素而且还要对外提供遍历的接口方法,因为遍历状态的存储问题不能对同一个容器同时进行多个遍历操作,如果开发者不提供遍历算法让使用者自己去实现,又会对容器的内部细节暴露,正因如此,迭代器模式应运而生。原创 2018-01-18 22:02:07 · 194 阅读 · 0 评论 -
设计模式—模板方法模式
定义定义一个操作中的算法的框架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定步骤,通俗来讲就是流程固定,具体实现不同使用场景多个子类有公有的方法,并且逻辑基本相同重要、重复的算法,可以把核心算法设计为模板方法,周边的相关细节功能则由各个子类实现重构时,模板方法模式是一个经常使用的模式,把共同的代码抽取到父类中,然后通过钩子函数约束其行为关键点一个抽象类,定义原创 2018-01-18 22:40:39 · 236 阅读 · 0 评论 -
设计模式—外观模式
定义要求一个子系统的外部与其内部的通信必须通过一个统一的接口对象进行。该模式提供一个高层次的接口,使得子系统更容易使用。使用场景为一个复杂子系统提供一个统一的简单接口。子系统往往因为不断演化而变得越来越复杂,甚至可能被替换。大多数模式使用时都会产生更多更小的类,这使子系统更具可重用性的同时也更容易对子系统进行定制、修改,这种易变形使得隐藏子系统的具体实现就变得尤为重要,外观模式可以提供一个简单统一的原创 2018-02-04 22:39:29 · 312 阅读 · 0 评论 -
设计模式—观察者模式
定义定义对象间一种一对多的依赖关系,使得每当一个对象状态改变时,所有依赖于它的对象都会得到通知并被自动跟新使用场景关联行为场景,需要注意的是关联行为是可拆分的,而不是组合关系事件多级触发场景跨系统的消息交换场景,如消息队列、事件总线的处理机制关键点一个抽象被观察者(Observable)—抽象主题把所有观察者对象的引用保存在一个集合里,每个主题都有任意数量的观察者,抽象主题提供一个接口,可以增加和删原创 2018-01-15 23:09:05 · 156 阅读 · 0 评论 -
设计模式—命令模式
简介命令模式其实就是将一系列的方法调用进行封装,用户只需要调用一个方法执行,那么所有这些被封装的方法将会被依次调用。定义将一个请求封装成一个对象,从而让用户使用不同的请求将客户端参数化,对请求队列或者记录请求日志,以及支持可撤销的操作使用场景需要抽象出待执行的动作,然后以参数的形式提供出来在不同时刻指定、排列和执行请求。一个命令对象可以有与初始请求无关的生存期需要支持取消操作支持修改日志功能,这样当原创 2018-01-15 21:43:19 · 189 阅读 · 0 评论 -
设计模式—原型模式
简介原型模式是创建型模式,原型二字表明了该模式应该有一个样板实例,用户从这个样板实例中复制出一个内部属性一致的对象,被复制的实例称之为原型。原型模式多用于创建复杂的或者构造耗时的实例,在这种情况下,复制一个以存在的实例可以使程序运行的更加高效。定义用原型实例指定创建对象的种类,并通过复制这些原型创建新的对象使用场景1.类初始化需要非常多的资源,这个资源一般包括数据、硬件资源等,通过原型复制避免这些消原创 2017-12-30 17:49:25 · 170 阅读 · 0 评论 -
设计模式—工厂方法模式
定义定义一个用于创建对象的接口,让子类决定实例化哪个类使用场景在任何需要生成复杂对象的地方,都可以使用工厂方法模式。复合对象适合使用工厂模式,用new就可以完成创建的对象无需使用工厂模式。关键点一个抽象工厂—定义创建对象的接口抽象工厂的实现类—可以是一个实现或多个实现,用于生产需要的具体对象一个抽象产品—工厂方法模式所创建的产品的父类抽象产品的实现类—需要被创建的具体产品实现/** * 抽象工厂类原创 2018-01-01 00:46:49 · 316 阅读 · 0 评论 -
抽象工厂方法模式
定义为创建一组相关或者是相互依赖的对象提供一个接口,而不需要指定他们的具体类使用场景一个对象族有相同的约束时可以使用抽象工厂模式。例如生产一部车需要很多部件:轮胎、发动机、制动系统等,不同的型号会有不同的部件,而这些部件之间又是相互依赖的。这时候就可以考虑使用抽象工厂模式。关键点抽象工厂—声明一组用于创建一个产品的方法,每个方法对应生产一种产品或者称之为组件具体工厂—抽象工厂的实现类,实现了在 抽象原创 2018-01-01 14:57:19 · 221 阅读 · 0 评论 -
设计模式—策略模式
定义策略模式定义了一系列算法,并将每一个算法封装起来,而且使他们可以相互替换。策略模式让算法独立于使用它的客户而独立变化。通俗的讲就是通过动态注入不同的对象或实现来动态替换某种具体行为。使用场景1.针对同一类型问题的多种处理方式,仅仅是具体行为有差别 2.需要安全的封装多种同一类型的操作 3.出现同一抽象类有多个子类,而又需要使用条件语句来选择 具体子类时关键点一个抽象的策略或算法一个或多个具体原创 2018-01-10 23:32:49 · 256 阅读 · 0 评论 -
设计模式—状态模式
简介状态模式中的行为由状态决定,不同的状态下有不同的行为。状态模式和策略模式的结构相同,但本质和目的却完全不一样。状态模式的行为是平行、不可替换的,策略模式的行为时彼此独立、可相互替换的。概括起来就是状态模式把对象的行为包装在不同的状态对象里,每一个状态对象都有一个共同的抽象状态基类。定义当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其行为使用场景一个对象的行为取决于它的状态,并原创 2018-01-11 23:43:04 · 219 阅读 · 1 评论 -
设计模式—单例模式
1.定义确保一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。2.使用场景例如:在一个应用中,应该只有一个ImageLoader实例,这个ImageLoader中既包含线程池、缓存系统、网路请求等,创建这个实例非常消耗系统资源,因此没有理由让它多次构建。这种不能自由构造对象的情况就是单例模式的使用场景。其他的例如:IO操作、数据库操作等。3.关键点1)将构造函数私有化(privat关键字)原创 2017-12-28 00:10:45 · 255 阅读 · 0 评论 -
设计模式—build模式
简介Builder模式是一步一步创建一个复杂对象的创建型模式,它允许用户在不知道内部构建细节的情况下,可以更精细的控制对象的构造流程。该模式是为了将构建复杂对象的过程和它的部件解耦,使得构建过程和部件的表示隔离开来,两者之间的耦合度也降到最低。定义将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。使用场景1.相同的方法,不同的执行顺序,产生不同的事件结果。(View的封装,对原创 2017-12-29 07:56:55 · 15912 阅读 · 2 评论 -
设计模式—责任链模式
定义使多个对象都有机会处理请求,从而避免了请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条连传递该请求,直到有对象处理它为止。使用场景多个对象可以处理同一请求,单具体由哪个对象处理则在运行时决定在请求处理这不明确的情况下向多个对象提交一个请求需要动态指定一组对象处理请求关键点一个抽象类,定义处理请求的方法,并持有下一节点对象的引用,对请求进行分发多个具体的请求处理类,对请求进行具原创 2018-01-14 18:54:30 · 187 阅读 · 0 评论 -
设计模式—组合模式
简介组合模式也成为部分整体模式,它将一组相似的对象看作一个对象来处理,并根据一个树状结构来组合对象,然后提供统一的方法去访问相应的对象定义将对象表示成树形结构以表示“部分—整体”的层次结构,使得用户对单个对象和组合对象的使用具有一致性。使用场景表示对象的部分、整体层次结构时从一个整体中能够独立出部分模块或功能的场景关键点一个抽象根节点—声明组合对象的接口,在适当情况下实现所有类共有接口的缺省行为一个原创 2018-01-30 19:44:31 · 208 阅读 · 0 评论 -
设计模式—桥接模式
重点内容 定义将抽象部分与实现部分分离,使它们都可以独立地进行变化使用场景如果一个系统需要在构件的抽象化角色和具体化角色之间增加更多的灵活性,避免在两个层次之间建立静态的继承关系,可以通过桥接模式使他们在抽象层建立一个关联关系对于那些不希望使用继承或因为多层次继承导致系统类的个数急剧增加的系统,也可以考虑使用桥接模式。一个类存在两个独立变化的维度,且这两个 维度都需要进行扩展。关键点一个抽象部分原创 2018-02-04 23:25:39 · 319 阅读 · 0 评论