设计模式
文章平均质量分 84
yuezheyue123
这个作者很懒,什么都没留下…
展开
-
MVVM中Databinding的使用
1、MVVM( Model-View-ViewModel),需要使用Data Binding在module的gradle中配置android{ dataBinding{ enabled true }}2.布局和节点介绍3.在代码部分在这里的设置方法都是和布局中data标签中的定义的variable中的name相对应。4....原创 2020-09-11 17:48:48 · 299 阅读 · 0 评论 -
MVP模式
MVP(Model-View-Presenter)Model:提供数据存取功能。View:负责显示Presenter:实现主要的逻辑代码。是Model和View的桥梁,将Model中的数据获取后传给View,使Model和View没有耦合。1.目录结构2.View层创建MainActivity的IGirview接口,主要是定义MainActivity要进行显...原创 2019-03-08 17:37:48 · 107 阅读 · 0 评论 -
设计模式---代理模式
定义:也成为委托模式。为其他的对象提供代理,以控制对这个对象的访问。使用场景:当无法或是不想直接访问某个对象时,可以通过一个代理对象来间接的访问。并且为了保证客户端使用的透明性,委托对象与代理对象需要实现相同的接口。也就是代理类和具体的对象类实现相同的接口,具有相同的方法。然后让代理类持有具体的对象类的引用,用代理类进行控制具体类的方法的调用。区别:使用代理模式,发现和builder模式的代码...原创 2018-09-30 14:19:02 · 141 阅读 · 0 评论 -
设计模式---中介者模式
定义:也称调解者模式或调停者模式。它包裹了一系列的对象之间的相互作用的方式。将多对多的相互作用转化成一对多的相互作用。使用场景:对象很多,并且每个对象都相互依赖彼此,这样为防止修改一个对象的时候,也会牵扯到其他对象的修改,就使用中介者模式。中介者模式将系统从网状结构变成以调停者为中心的星状结构。这样降低系统的复杂性,提高扩展性的目的。角色:mediator:中介者,这里主要是处理各个coll...原创 2018-09-30 11:12:37 · 145 阅读 · 0 评论 -
设计模式---访问者模式
定义:访问者模式是一种将数据结构和数据操作分离的操作,封装一些作用在某中数据结构的各个元素的操作,可以在不改变这个数据结构的情况下定义作用这个数据的新操作。使用场景:对象元素比较稳定,但经常在对象结构上定义新的操作。优点:符合单一职责,能很好的进行扩展,能在操作和数据上进行解耦。缺点:①违反依赖倒置原则。②具体元素对访问者公布细节,违反迪米特原则。③改动代价比价大角色:visitor: ...原创 2018-09-29 11:35:42 · 114 阅读 · 0 评论 -
设计模式---模板方法模式和AsyncTask的源码分析
定义:定义一个操作中的方法的框架,将这些方法的具体的实现延迟到子类中实现, 使得子类能够不改变算法的结构就能重新定义算法的内容。也就是流程封装。使用场景:代码执行的流程是固定的,也就是我们常用的将各个方法抽取的到父类中,然后通过钩子函数进行约束子类中的行为。我们常用的BaseActivity,BaseFragment等都是使用这种设计模式。优点:封装不变的部分,扩展可变的部分。提取公共的方法,...原创 2018-09-27 11:14:49 · 171 阅读 · 0 评论 -
设计模式--备忘录模式
定义:要保证被保存的对象不能被对象从外部访问,目的是保护好被保存的这些对象的状态的完整性以及内部实现不向外面暴露。使用场景:①需要保存一个对象在某个时刻的状态或部分状态。②一个对象不希望外界直接访问内部状态,通过中间对象可以直接访问其内部状态。//这一点和builder模式的理念相同。优点:能够进行状态的恢复 , 用户不用关心保存的细节。缺点:类成员增多。角色:originator...原创 2018-09-25 10:08:42 · 93 阅读 · 0 评论 -
设计模式--责任链模式
定义:将每个节点为每个对象,每个对象拥有不同的处理逻辑,讲一个请求从链的首端出发,沿着链的路径传递到每个节点对象,知道具有对象处理这个请求为止。 对于每个请求来说,具有两种情况①被处理②没被处理 对于每个处理的节点来说,也具有两种情况①处理请求②将请求发给下一个节点使用场景:多个对象处理同一个请求,但是具体哪个对象进行处理,按照运行时候的逻辑进行判断。 优点:责任链模式很好的将请求的发起...原创 2018-09-14 11:12:48 · 147 阅读 · 0 评论 -
设计模式--状态模式
定义:当一个对象的内在状态改变时,允许改变其行为,这个对象看起来像是改变了行为。也就是在不同的状态下有不同的响应。 特点:在写法上类似策略模式,但是策略模式各个具体类是可以替换的,因为各个具体类的行为是彼此独立的,意义是相同的。而状态模式的各个具体类是意义各自不同,不能相互替换,不同的状态代表着不同的行为。 使用场景: 1.一个对象的行为取决于它的状态,并且在运行时根据状态改变行为。 2....原创 2018-09-14 10:09:41 · 136 阅读 · 0 评论 -
设计模式--观察者模式
定义:定义对象间的一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖于他的对象都会得到通知并自动的更新。也称为订阅模式。使用场景:①事件的多级触发场景②跨系统的消息交换场景,如消息队列,事件总线的处理机制。角色:①Subject (Obervable): 被观察者角色。抽象主题将所有的观察者对象的引用保存在一个集合中,每个主题都有任意数量的观察者,抽象主题提供一个接口,能增加和删除...原创 2018-09-18 11:34:54 · 117 阅读 · 0 评论 -
设计模式--命令模式
定义:将一系列的方法调用封装,用户只需要调用一个方法就能将其他的方法依次调用。具有操作日志记录,可撤销操作等功能。可以将复杂的操作封装在操作类中,将行为的调用者和实现者进行解耦。组成:操作类,命令类,调用类等三级嵌套。使用场景:①支持取消操作②支持日志记录③支持事务功能操作:1.具体的执行命令的类2.抽象的命令类具体的命令类3.命令的调用者4.使用...原创 2018-09-18 10:31:24 · 135 阅读 · 0 评论 -
设计模式--工厂方法模式和简单工厂模式和抽象工厂模式
定义:父类负责定义创建对象的公共接口,而子类负责生成具体的对象,目的是将类的实例化操作延迟到子类中完成,即由子类决定究竟应该实例化哪个类。 使用场景:复杂类的创建。优点: 1.能够封装复杂类创建。 2.能够隐藏创建类的具体信息。 3.具有很好的扩展性,如果需要添加新的功能的时候,只需要添加新的工厂和具体的产品类即可。缺点:如果需要创建多个对象,那么就需要多个具体的工厂的子类,这样就...原创 2018-09-10 11:16:01 · 166 阅读 · 0 评论 -
设计模式--解释器模式
定义:定义个文法,并且定义一个解释器, 使用解释器来表示这个文法。文法就是一个中规律规则。 使用场景:①将某个简单的语言需要解释执行并将语言中语句表示为一个抽象的语法树。②在某个特定的领域出现不断重复的问题的时候,可以将该领域的问题转化为一个文法,然后进行解释。 好处:当我们要进行文法的延伸的时候,只需要增加响应的非终结符解释器,并且在构建抽象语法树的时候进行具体的解释即可。 坏处:会导致类...原创 2018-09-17 11:43:43 · 120 阅读 · 0 评论 -
设计模式--原型模式
原型模式是表明该模式有一个样板实例, 用户在这个对象中复制出一个内部属性一致的对象。也就是说的克隆,被复制的实例就是“原型”。也就是通过拷贝这些原型创建新的对象。 用途: ①多用于创建复杂的或者构造耗时的实例。 ②进行保护性拷贝 ③使用时候并不一定效率比new高,只有在复杂的对象的克隆上才会有效率的提升。 1.实现cloneable接口,然后重写clone()方法,其实clone方法并不...原创 2018-09-06 13:59:12 · 123 阅读 · 0 评论 -
android设计模式---builder设计模式
builder模式是创建一个复杂对象的创建型模型,允许用户在不知道复杂对象的内部细节的情况下进行精细化的控制,是将构建复杂对象的过程和控制对象的过程进行分隔开,从而达到解耦的目的。( 1.实现方法: 在复杂的对象的外面创建一个控制对象builder,并且在使用方式上一般使用链式调用,也就是每个方法中return this。 2.目的:我们每次通过控制对象达到对复杂对象操作的,并且在此过程中,减...原创 2018-09-03 18:28:41 · 165 阅读 · 0 评论 -
java--实现单例的五种模式
单例模式具有多种写法 ①恶汉式 ②懒汉式 ③双检查模式 ④静态内部类模式 ⑤枚举模式 源码地址:https://github.com/yunzheyue/SingleInstanceTest原创 2018-08-28 11:14:13 · 147 阅读 · 0 评论 -
android-设计模式-迭代器模式
定义:提供一种方法顺序的访问一个容器对象中的各个元素,而又不暴露该对象内部表示。具有良好的封装性,不需要关系遍历的算法。 用途是主要和集合配合使用模仿集合,并使用迭代器 创建集合、 创建迭代器 ...原创 2018-08-16 16:16:29 · 170 阅读 · 0 评论 -
android-设计模式-策略模式
定义:定义了一系列的算法,将相同类型的每个算法封装起来,并且可以相互的替换,利用了多态的形式。主要是替代if…else… switch…case..等硬编码的形式。缺点就是在使用的客户端必须理解算法的区别,并且将各个算法封装起来对象的数目就会很多。 具体的是使用方法: Context:用来操作策略的对象 Strategy:策略的抽象 ConcreteStrategy:具体的策略抽象的策...原创 2018-08-16 16:25:35 · 148 阅读 · 0 评论 -
面向对象的六大基本原则
1.单一职责原则 Single Responsibility Priciple 对于一个类而言,应该有一个引起它变化的原因。 要符合单一职责原则,那么就要将一个类中的各个功能分开。 比如图片加载控件,需要将图片的加载和缓存进行分开。2.开闭原则 Open Close Principle 软件中的对象对于扩展是开放的,但是对于修改是封闭的。也就是说软件修改的时候,应该尽量用扩展进行变化...原创 2018-08-27 15:34:46 · 1242 阅读 · 0 评论