
设计模式
文章平均质量分 85
双鱼千殇
寒塘渡鹤影,冷月葬花魂
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Android源码看设计模式(二)--------基于单例模式的Context相关分析
单例模式定义:确保一个类中只有一个实例,并且自行实例化向整个系统提供这个实例使用场景适用于所创建的对象过于消耗资源,如访问IO、数据库等资源时,可使用单例模式,确保该类只有一个实例。如ImageLoader,其中包含线程池、缓存系统、网络请求等,很消耗资源,这种不能自由构造对象的情况,就是单例模式的使用场景单例模式的写法1、饿汉模式public class Single...原创 2018-07-10 16:50:18 · 819 阅读 · 0 评论 -
Android源码看设计模式(二十)--------------------其余模式简介
原型模式定义:用原型示例指定创建对象的种类,并通过拷贝这些原型创建新的对象使用场景类初始化需要消化非常多的资源,这个资源包括数据、硬件资源等,通过原型拷贝避免这些消耗通过new产生的一个对象需要非常繁琐的数据准备或者权限,这时可以使用原型模式一个对象需要提供给其他对象访问,而且各个调用者可能都需要修改其值时,可以考虑使用原型模式拷贝多个对象供调用者使用,即保护性拷贝...原创 2018-08-12 10:45:11 · 216 阅读 · 0 评论 -
Android源码看设计模式(十九)--------关于模板模式的相关分析
模板模式定义:定义一个操作中的算法的框架,将一些步骤在子类中实现,使得子类可以比改变一个算法的结构即可以冲定义该算法中的某些特定步骤使用场景多个子类有公有的方法,并且逻辑基本相同重要、复杂的算法,可以将核心算法设计为模板方法,周边的相关细节则由各个子类实现重构时,模板方法模式是一个经常使用的模式,把相同的代码抽取到父类中,然后通过钩子函数约束其行为模板模式的写法UM...原创 2018-08-12 10:44:20 · 220 阅读 · 0 评论 -
Android源码看设计模式(十八)--------关于策略模式的动画时间插值器相关分析
策略模式定义:策略模式定义了一系列算法,并将每一个算法封装起来,而且使他们还可以相互转换。策略模式让算法独立于使用它的客户端而独立变化实用场景针对同一类型问题的多种处理方式,仅仅是具体行为有差别时需要安全的封装多种同一类型的操作时出现同一抽象类有多个子类时,而又需要使用条件分支语句来选择具体子类时状态模式的写法UML图如下: Context:用来操作策略模式...原创 2018-08-11 23:05:20 · 280 阅读 · 0 评论 -
Android源码看设计模式(十五)--------关于备忘录模式的onSaveInstanceState方法分析
备忘录模式定义:在不破坏封闭的前提下,捕捉一个对象的内部状态,便在该对象之外保存这个状态,这个,之后就可以将该对象恢复到原先保存的状态使用场景需要保存一个对象在某一个时刻的状态或者部分状态如果用一个接口来让其他对象得到这些状态,将会暴露对象的实现细节并且破坏对象的封装性,一个对象不希望外界直接访问其内部状态,通过中间对象可以间接的访问其内部状态备忘录模式的写法UM...原创 2018-08-02 19:19:32 · 380 阅读 · 0 评论 -
Android源码看设计模式(十四)--------关于访问者模式相关分析
访问者模式定义:封装一些作用于某种数据结构中的各元素的操作,它可以在不改变这个数据结构的前提下定义作用于这些元素的新的操作。使用场景对象结构比较稳定,但是需要经常在此对象结构上定义新的操作需要对一个对象结构中的对象进行很多不同的并且不相关的操作,但是不希望增加新的操作的时候修改这些类访问者模式的写法UML图如下: Visitor:抽象访问者,为对象结构中...原创 2018-08-02 10:37:22 · 200 阅读 · 0 评论 -
Android源码看设计模式(十三)--------关于中介者模式的锁屏功能的相关分析
中介者模式定义:中介者模式包装了一系列对象相互作用的方式,使得这些对象不必相互明显作用。从而使它们可以松散耦合。当某些对象之间的作用发生改变时,不会立即影响其他的一些对象之间的作用。保证这些作用可以彼此独立的变化。中介者模式将多对多的相互作用转化为一对多的相互作用。中介者模式将对象的行为和协作抽象化。使用场景当对象之间的交互操作很多且每个对象的行为操作都依赖彼此时,为防止在修改一个...原创 2018-07-31 16:20:06 · 225 阅读 · 0 评论 -
Android源码看设计模式(十二)--------关于观察者模式的Rxjava的相关分析
观察者模式定义:定义对象间一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并且被自动更新使用场景关联行为场景,注意不是“组合”关系事件多级触发场景跨系统的消息交换场景,如消息队列、事件总线的处理机制观察者模式的写法UML图如下: Subject:抽象主题(抽象被观察者),抽象主题角色把所有观察者对象保存在一个集合里,每个主...原创 2018-07-30 15:48:12 · 242 阅读 · 0 评论 -
Android源码看设计模式(十六)--------关于责任链模式的Okhttp中拦截器分析
责任链模式定义:使多个对象都有机会处理请求,从而避免了请求的发送者和接受者之间的耦合关系,将这些对象连成一条链,并沿着这条链去传递该请求,直到有对象处理它为止使用场景多个对象可以处理同一个请求,但具体由那个对象处理则在运行时动态决定在请求处理者不明确的情况下向多个对象中的一个提交一个请求需要动态的指定一组对象处理请求责任链模式的写法UML图如下: Abs...原创 2018-08-03 18:46:56 · 379 阅读 · 0 评论 -
Android源码看设计模式(十一)--------关于代理模式的AndroidManagerProxy的相关分析
代理模式定义:为其他对象提供一种代理以控制对这个对象的访问使用场景当无法或者不想直接访问某个对象或者访问某个对象存在困难时可以通过一个代理对象来间接访问,为了保证客户端使用的透明性,委托对象与代理对象需要实现相同的借口代理模式的写法代理模式UML结构图: Subject:抽象主题类,声明真实主题与代理的共同接口方法。RealSubject:真实主题类,定义...原创 2018-07-26 12:10:30 · 207 阅读 · 0 评论 -
Android源码看设计模式(九)--------关于组合模式的View和ViewGroup的相关分析
组合模式定义:将对象组合成树形结构以表示“部分-整体”的层次结构,使得用户对单个对象和组合对象的使用具有一致性使用场景表示对象的部分-整体层次的结构时从一个整体中能够独立出部分模块或者功能的场景组合模式的写法组合模式分为两种:安全型组合模式、透明型组合模式 安全性组合模式UML图如下: 透明型组合模式UML图如下: Component:抽象节点...原创 2018-07-20 14:16:12 · 652 阅读 · 0 评论 -
Android源码看设计模式(五)--------基于创建者模式的Glide相关分析
创建者模式概念: 建造者模式(builder),将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示通俗的来说,所谓创建者模式,就是客户端不必知道产品内部的组成的细节,而且具体的创建者之间是独立的,容易扩展。主要应用场景是当产品有很多的组成部件可以设置,但是我们在使用的时候可以只设置其中一部分,此时就可以使用创建者模式,比如AlertDialog的使用创建...原创 2018-07-13 14:02:08 · 1405 阅读 · 0 评论 -
Android源码看设计模式(四)--------基于抽象工厂方法模式的MediaPlayer相关分析
抽象工厂方法模式定义:为创建一组相关或者是相互依赖的对象提供一个接口,而不需要指定它们的具体类应用场景对象族有相同的规范或者说是约束抽象工厂方法写法UML图如下: AbstractFactory:抽象工厂,它声明了用来创建不同产品的方法。ConcreteFactory:具体工厂,实现抽象工厂中定义的创建产品的方法。AbstractProduct:抽象产品,为每种...原创 2018-07-13 13:49:59 · 306 阅读 · 0 评论 -
Android源码看设计模式(三)--------基于工厂模式的Executors相关分析
工厂模式定义:定义一个创建对象的借口,让子类决定实例化哪个类使用场景需要生成复杂对象的就可以使用工厂模式,简单对象直接new即可工厂模式写法UML图如下: 实例来源:http://liuwangshu.cn/designpatterns/10-factorymethod.html 所需者有四种角色: - 抽象产品类:Computer - 具体产品类:Le...原创 2018-07-12 23:09:00 · 313 阅读 · 0 评论 -
Android源码看设计模式(十)--------关于享元模式的Handler相关分析
享元模式定义:使用共享对象可以有效的支持大量的细粒度的对象应用场景系统中存在大量的相似对象细粒度的对象都具备比较接近的外部状态,而内部状态与环境无关,也就是说对象没有特定身份需要缓冲池的场景享元模式的写法UML图如下: Flyweight:享元对象抽象基类或者接口ConcreteFlyweight:具体的享元对象FlyweightFactory:享元...原创 2018-07-24 11:02:59 · 1175 阅读 · 0 评论 -
Android源码看设计模式(八)--------关于装饰模式startActivity的相关分析
装饰模式定义:不改变类文件和继承的情况下,动态的为对象添加额外的职责使用场景在不影响其他对象的情况下,以动态、透明的方式给单个对象添加职责需要动态的给一个对象添加额外的功能,这些功能可以动态的撤销当不能采用集成的方式对系统进行扩充或者采用集成不利于系统扩展和维护装饰模式的写法UML图如下: Component:抽象组件,给对象动态的添加职责。Conc...原创 2018-07-18 18:08:19 · 274 阅读 · 0 评论 -
Android源码看设计模式(七)--------关于桥接模式的相关分析
桥接模式定义:将抽象部分和实现部分分离,使他们都可以独立的进行变化使用场景任何多维度变化类或者多个树状类之间的耦合都可以使用桥接模式来实现耦合。如果一个系统需要在构建的抽象化角色和具体化角色之间增加更多的灵活性,避免在两个层次之间建立静态的继承联系,可以通过桥接模式使它们在抽象层建立一个关联联系。对于不希望使用继承或者因为多层次的继承导致系统类的个数急剧增加的系统,也可使...原创 2018-07-17 14:45:12 · 272 阅读 · 0 评论 -
Android源码看设计模式(十七)--------关于状态模式的相关分析
状态模式定义:当一个对象的内在状态改变时允许改变其行为,这个对象看起来好像是改变了其类。状态模式中的行为是由状态决定的,不同的状态下是有不同的行为的,状态模式的行为是平行的、不可替换的。状态模式把对象的行为包装在不同的状态对象里,每一个状态对象都有一个共同的抽象状态基类。状态模式的意图是让一个对象在其内部状态改变的时候,其行为也随之改变实用场景一个对象的行为取决于它的状态,并且它...原创 2018-08-07 19:40:41 · 201 阅读 · 0 评论