随笔分类 - 10-设计模式
摘要:引用:(23条消息) 《Javascript设计模式与开发实践》关于设计模式典型代码的整理(上):单例模式、策略模式、代理模式、迭代器模式、发布-订阅模式、命令模式、组合模式_QQsilhonette的博客-CSDN博客 1、单例模式:保证一个类仅有一个实例,并提供一个访问它的全局访问点。 使用闭包
阅读全文
摘要:1、单一职责原则 单一职责原则是指,不要让一个类承担过多的职责。避免职责耦合在一起,避免一个职责的变化影响到其他职责。 比如在Activity中存在网络请求的逻辑,导致Activity过于臃肿,导致引起这个Activity变化的原因太多,这样就违反了单一职责原则,不利于后续的版本维护。 最后再来理解
阅读全文
摘要:引用:(23条消息) 《Javascript设计模式与开发实践》关于设计模式典型代码的整理(下):模板方法模式、享元模式、职责链模式、中介者模式、装饰模式、状态模式、适配器模式_QQsilhonette的博客-CSDN博客 8、模板方法模式:一种基于继承的设计模式。 // 模板方法模式var Bev
阅读全文
摘要:设计模式汇总篇,一定要收藏: 永不磨灭的设计模式shusheng007.top/2021/09/07/999/ 没想到这篇设计模式的文章引起了如此多小伙伴的兴趣,本人近来一直在使用kotlin,某天突然好奇当Builder模式遇到Kotlin会怎样,还有爱吗,欢迎好学的小伙伴一起探讨。 shush
阅读全文
摘要:设计模式主要分三个类型:创建型、结构型和行为型。 其中创建型有: 一、Singleton,单例模式:保证一个类只有一个实例,并提供一个访问它的全局访问点 ; 应用场景:一个无状态的类使用单例模式节省内存资源。 二、Abstract Factory,抽象工厂:提供一个创建一系列相关或相互依赖对象的接口
阅读全文
摘要:一、引言 这里以电视遥控器的一个例子来引出桥接模式解决的问题,首先,我们每个牌子的电视机都有一个遥控器,此时我们能想到的一个设计是——把遥控器做为一个抽象类,抽象类中提供遥控器的所有实现,其他具体电视品牌的遥控器都继承这个抽象类,具体设计类图如下: 这样的实现使得每部不同型号的电视都有自己遥控器实现
阅读全文
摘要:提到状态模式,让我想到了工作流,工作流就是控制一个一个的节点状态来实现节点的跳转,最后来控制流程。 如果上面发起了一个请假流程,这个时候第一个节点就是部门领导审核,部门领导审核通过会继续往下走,如果不通过那么有两种状态,一种是直接驳回请求,领导说,项目最近很急,任何人都不能请假,还有一种是你写的请假
阅读全文
摘要:定义:用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 个人理解:各个类之间的通信不是直接进行,而是通过一个中间者来转发,那么就要求中间者了解所有的类,类中要有中间者,这样类和类之间就可以不用直接关联了。 1、中间者和要通
阅读全文
摘要:定义:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。 1、Handler类,定义一个处理请求的接口 1 // Handler类,定义一个处理请求的接口 2 abstract class Handler
阅读全文
摘要:1、以游戏的场景为例,我们来讲解这个备忘录模式,一游戏角色有生命力、攻击力、防御力等数据,在打Boss后如果效果不理想可以让游戏恢复到决斗前的状态。 2、玩家类 1 class GameRole 2 { 3 //生命力 4 public int Vitality { set; get; } 5 //
阅读全文
摘要:1、理解:备忘录模式就是在发起人内部有一个创建备忘录类的方法,这个备忘录类初始化时保存了发起人的状态,如果发起人要恢复状态就调用备忘录的状态属性,也可以通过一个管理者类来管理这个备忘录。 2、定义:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到
阅读全文
摘要:1、一种事件会有不同的状态,我们将这些状态都独立出来,用一个类去维护这些状态。 2、定义:当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。 3、代码实现: 1)定义一个抽像的类 2)实现类A\B 3)要有一个维护实现状态类的子类 4)客户端
阅读全文
摘要:1、个人理解:首先我们要有一件产品,这个产品由多个部件组成;然后再有一个抽象建造者,将建造这个产品的部件都写成抽象方法,继承它的子类会去重写这些方法。最后我们要有一个指挥者类,去封装调用这些方法,也就是建造的过程。 2、定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
阅读全文
摘要:1、个人理解:有时候我们要去访问很多类里面的方法会比较麻烦,就想,我可不可以只访问一次就可以访问到所有的类,这样就有了外观模式,他在类A中封装了一个方法对其它很多类B,C,D...中的方法进行访问,那么我们要访问B,C,D...类中的方法就只需要访问A中的一个方法就可以了。 2、定义:为子系统中的一
阅读全文
摘要:1、个人理解,我们在考试的时候,会每人发一份卷子,这个卷子都是一样的,也就成了模板,但是这个卷子不一样的地方是什么呢,就是我们写在上面的答案,那么我们现在将这个卷子当成一模板写成一个类,但是这个类中答案的部分又不能被写死了,那么我们就将这个写答案的地方写成一个抽象方法,让继承他的子类去实现这个抽象方
阅读全文
摘要:1、个人理解:也就是在具体的原型类中去重写Clone方法,在这个方法中去掉用this.MemberwiseClone()方法,这是对对象的浅表复制 2、专业解释:用原型实例指定创建对象的种类,并且通过拷贝这些原创建新的对象 3、代码实现 1)抽象的原型类 2)具体的原型类 3)客户端代码
阅读全文
摘要:1、个人理解:被代理类与代理类同时要实现相同的接口或抽象类,在代理类中保留对被代理类的引用,实现抽象类的方法时对被代理类的方法进行调用,初始化代理类的时候要传入的参数是被代理类,当我们调用代理类的方法时实际上执被代理类的方法,也就实现了代理模式。 2、专业解释:为其他对象提供一种代理以控制对这个对象
阅读全文
摘要:1、我的个人理解,会根据不同时期有不同的理解 理解一:装饰模式给我的理解就是对一个对象进行层层包装,而每一次包装都是在上一层的基础上进行,而不是从然来没有进行任何包装的对像开始的 2、定义:动态的给一个对象添加一些额外的职责,就是增加功能来说,装饰模式比生成子类更为灵活。 3、以对人类进行装饰为例,
阅读全文
摘要:介绍:它定义了算法家族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化,不会影响到使用算法的客户 1.定义抽象算法类 2.定义具体的算法去实现抽象类 3.上下文,类中有算法类的属性,有一个调用算法类的方法 4.客户端调用
阅读全文
摘要:实现一个计算机的功能,可以对两个数进行加、减、剩、除 1、创建一个运算类,让具体的运算去继承 2、具体的操作类去继承操作类 3、简单工厂类,里面有一个创建运算类的方法 3、客户端代码
阅读全文