设计模式
介绍Android中常见的设计模式以及在项目中的实战
OneXzgj
这个作者很懒,什么都没留下…
展开
-
设计模式(一)设计六大原则
文章目录1. 单一职责原则(SRP)2. 开放封闭原则(ASD)3. 里氏替换原则(LSP)4. 依赖倒置原则(DIP)5. 迪米特原则(LOD)6. 接口隔离原则(ISP)1. 单一职责原则(SRP)定义:就一个类而言,应该仅有一个引起它变化的原因。从这句定义我们很难理解它的含义,通俗讲就是我们不要让一个类承担过多的职责。如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化...原创 2019-08-21 06:53:33 · 135 阅读 · 0 评论 -
设计模式(二)责任链设计模式
1.定义使多个对象都有机会处理请求,从而避免了请求的发送者与接受者之间的耦合关系,将这些对象生成一个链,并沿着这条链传递该对象,只到有对象处理这个请求为止,即:将一个请求从链式的首端发出,沿着链的路径依次传递给每一个节点对象,直至有对象处理这个请求为止,将这样的一种模式称为责任链设计模式2.结构图3.使用场景多个对象可以处理同一个请求,但具体由哪个对象处理,只有到运行的时候动态决定4....原创 2019-02-20 22:45:06 · 148 阅读 · 0 评论 -
设计模式(三)代理设计模式
1.定义为其他对象提供一种代理以控制对这个对象的直接控制2.使用场景:当无法或者直接访问到目标对象的时候,或者访问某个对象有困难的时候,可以通过一个代理对象来间接访问,为了保证客户端使用的透明性,委托对象与代理对象要实现相同的接口,即(代理和委托的约束)3.代理模式分类 分为两种:静态代理、动态代理。静态代理是由程序员创建或特定工具自动生成源代码,在对其编译。在程序员运行之前,代理...原创 2019-02-24 20:25:15 · 168 阅读 · 0 评论 -
设计模式(四)Builder设计模式
1.定义以及UML建模图:将一个复杂的对象的构建与它的表示分离,是的同样的构建过程可以创建不同的表示.2.使用场景:多个部件或者零件,都可以装配到一个对象中,但是产生的运行结果又相同产品类非常复杂,或者产品类中调用顺序不同产生了不同的作用初始化一个对象特别复杂,如使用多个构造方法,或者说有很多参数,并且都有默认值时。3.核心类(1) 抽象产品类 computer(2) Build...原创 2019-02-27 22:10:01 · 305 阅读 · 0 评论 -
设计模式(五)装饰器模式
1、定义以及UML建模图装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。2、使用场景这种模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能。我们通过下面的实例来演示装饰器模式的用法。其中,我们将一部手机安装不同的应用软件,从而实现不同...原创 2019-03-03 20:19:51 · 181 阅读 · 0 评论 -
设计模式(六)外观模式
1、定义:1.1 外观模式(Facade Pattern)即一个系统的外部与内部的通信必须通过一个统一的对象进行,将所有的功能,封装在一个类中,使得子系统更易于使用。1.2 作用隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性。这种模式涉及到一个单一的类,该类提供了客户端请求的简化方法和...原创 2019-03-12 23:38:22 · 140 阅读 · 0 评论 -
设计模式(七)适配器模式
一、定义:适配器模式是把一个类的接口变化成客户端所期待的另一种接口,从而使原本因接口不匹配的而无法在一起工作的两个类能够在一起进行工作二、使用场景:1.系统想用现有的类,而此类的接口不符合所期待的系统的需要,即不兼容2.想建立一个可以重复使用的类,用于与一些彼此之间没有太大关联的一些类3.需要统一输出的接口,但是输入类型不可预知情况三、适配器模式分类:####3.1类适配器Ada...原创 2019-07-21 17:13:26 · 237 阅读 · 0 评论 -
设计模式(八)状态模式
定义:当一个对象的内在状态发生改变时允许改变其行为,这个对象看起来改变了其类描述:状态模式中行为是由状态决定的,不同的状态有不同的行为,状态模式的意图是让一个对象在其内部状态改变的时候,其行为也随之改变。应用场景一个对象是有状态的这个对象在不同的状态时,行为不一样状态可以切换UML建模图Context :环境类,定义客户兴趣的接口,维护了一个State子类的实例,这个实例定义了...原创 2019-07-23 23:34:44 · 107 阅读 · 0 评论 -
设计模式(九)备忘录模式
文章目录1.定义:2.简单描述:3.UML建模图4.简单示例:5.Android中的备忘录设计模式:6.备忘录优缺点:1.定义:备忘录模式属于行为型模式,它通过在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。2.简单描述:备忘录模式用户保存对象的状态,并且以后恰当时间可以再次恢复到此状态。即可以保存和获取该对象的状态。3.UML建模图UML角色解读:M...原创 2019-07-27 21:05:32 · 227 阅读 · 0 评论 -
设计模式(十)观察者模式
文章目录1.定义:2.UML建模图3.观察者模式简单实现3.Android中的使用3.1 Button的点击事件的使用(接口回调,1对1关系)3.2 ListView的Adapter的观察者分析1.定义:观察者模式定义对象间的一种一对多的关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并自动更新。2.UML建模图Subject:抽象主题(抽象被观察者),抽象主题角色把所有...原创 2019-07-29 22:34:15 · 167 阅读 · 0 评论 -
设计模式(十一)单例设计模式
简介:单例模式,是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中,应用该模式的类一个类只有一个实例。即一个类只有一个对象实例。一、饿汉式 private static final CEO ceo=new CEO(); private CEO(){ } public static CEO getCeo(){ ...原创 2019-08-13 22:39:46 · 111 阅读 · 0 评论 -
设计模式(十二)模板设计模式
1.定义:定义一个操作中的算法框架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤2.使用场景1.多个子类有公有的方法,并且逻辑基本相同2.重要、复杂的算法,可以把核心算法设计为模板方法,周边的相关细节功能则由各个子类实现3.重构时,模板方法模式是一个经常使用的模式,把相同的代码抽取到父类中,然后通过钩子函数约束其行为3.UML建模图Abs...原创 2019-08-14 09:45:20 · 113 阅读 · 0 评论 -
设计模式(十三)策略设计模式
文章目录1.定义:2.使用场景3.UML建模图4.策略模式的简单实现5.优点缺点比较优点缺点6.在Android中的使用示例1.定义:定义一系列的算法,把每一个算法封装起来, 并且使它们可相互替换。策略模式模式使得算法可独立于使用它的客户而独立变化。2.使用场景意图:定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。主要解决:在有多种算法相似的情况下,使用 if…e...原创 2019-08-17 18:22:21 · 174 阅读 · 0 评论 -
设计模式(十四)原型设计模式
文章目录1.定义:2.使用场景3.UML图示4.简单示例5.浅拷贝和深拷贝5.1实现浅拷贝5.2 实现深拷贝6.优缺点比价1.定义:原型模式(Prototype Pattern)是用于创建重复的对象,同时又能保证性能。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式是实现了一个原型接口,该接口用于创建当前对象的克隆。当直接创建对象的代价比较大时,则采用这种模式。例如...原创 2019-08-18 11:36:42 · 166 阅读 · 0 评论 -
设计模式(十五)享元设计模式
文章目录1.定义2.使用场景:3.UML建模图4.简单实现示例1.定义享元模式(Flyweight Pattern)主要用于减少创建对象的数量,以减少内存占用和提高性能。这种类型的设计模式属于结构型模式,它提供了减少对象数量从而改善应用所需的对象结构的方式。2.使用场景:主要解决:在有大量对象时,有可能会造成内存溢出,我们把其中共同的部分抽象出来,如果有相同的业务请求,直接返回在内存中已有...原创 2020-04-28 14:48:10 · 138 阅读 · 0 评论 -
设计模式(十六)中介者设计模式
文章目录1.定义:2.使用场景3.UML图示4.中介者模式的简单实现1.定义:中介者模式(Mediator Pattern)是用来降低多个对象和类之间的通信复杂性。这种模式提供了一个中介类,该类通常处理不同类之间的通信,并支持松耦合,使代码易于维护。中介者模式属于行为型模式。2.使用场景中介者模式很容易实现呢,但是也容易误用,不要着急使用,先要思考你的设计是否合理。当对象之间的交互变多时...原创 2019-08-21 06:42:40 · 195 阅读 · 0 评论 -
设计模式(十七)(抽象)工厂设计模式
一、 工厂设计模式1.定义一个用于创建对象的接口,让子类决定实例化哪个类2.使用场景在任何需要生成复杂对象的地方,都可以使用工厂方法模式,复杂对象适合使用工厂模式,直接用new出来的对象无需使用工厂模式。3.核心类以及UML建模图抽象工厂类,具体工厂类,抽象产品类,具体产品类,客户端使用3.1 抽象工厂类public abstract class AbastractIoFacto...原创 2019-02-27 08:54:13 · 730 阅读 · 0 评论