202202-10 Java面试题冲刺第十五天--设计模式 目录面试题1:面向对象程序设计(OOP)的六大原则分别有哪几个面试题2:你说一下什么是设计模式追问1:那你怎么理解高内聚和低耦合?面试题3:设计模式有哪几种?追问1:你比较熟悉哪种设计模式?说说原理。追问2:那你说说适配器模式的原理吧适配器模式优缺点总结面试题1:面向对象程序设计(OOP)的六大原则分别有哪几个开闭原则(OpenClosePrinciple)及“开放-封闭原则”单一职责原则(SingleResponsibilityPrinciple)里氏替... 继续阅读 >
202109-17 详解Java实现设计模式之责任链模式 目录一、模拟业务需求二、小步小跑的迭代开发三、系统对数据的校验要求四、新建一个抽象类五、子类的实现六、构建责任链和调用七、可维护性八、总结8.1、责任链模式8.2、责任链模式适用的场景一、模拟业务需求假设我们现在需要在我们的系统中导入一批关于学生信息的Excel的数据,其主要的信息有:学号、姓名、年龄、性别等等,在导入系统的时候,我们肯定不能直接的保存到数据库,我们肯定是先要对这个Excel的数据进行校验,看是否... 继续阅读 >
202109-17 解析Java实现设计模式六大原则之里氏替换原则 目录一、什么是里氏替换原则1.1、里氏替换原则定义1.2、里氏替换原则有至少有两种含义二、使用里氏替换原则的目的三、里氏替换原则与继承多态之间的关系四、里式替换的规则4.1、子类方法不能违背父类方法对输入输出异常的约定4.2、子类方法不能违背父类方法定义的功能4.3、子类必须完全实现父类的抽象方法五、里氏替换原则的作用六、里氏替换原则的实现方法七、案例分析7.1、案例一:两数相减7.2、案例二:"几维鸟不是鸟"八、总结... 继续阅读 >
202109-16 分析设计模式之模板方法Java实现 目录一、什么是模板方法设计模式1.1、模板方法的用途1.2、模板方法的定义二、定义模板方法的步骤2.1、定义模板类2.2、定义具体子类2.3、定义客户端调用2.4下抽象类和子类之间的UML图和源码实现三、案例3.1、案例1:一日规划3.2、案例2:钩子方法四、模板方法的优缺点4.1、优点4.2、缺点五、使用场景六、对设计模式六大原则的应用思考一、什么是模板方法设计模式从字面意义上理解,模板方法就是定义出来一套方法,作为模板,也就... 继续阅读 >
202109-14 Go语言设计模式之结构型模式 目录一、组合模式(CompositePattern)1.1、简述1.2、Go实现二、适配器模式(AdapterPattern)2.1、简述2.2、Go实现三、桥接模式(BridgePattern)3.1、简述3.2、Go实现四、总结一、组合模式(CompositePattern)1.1、简述在面向对象编程中,有两个常见的对象设计方法,组合和继承,两者都可以解决代码复用的问题,但是使用后者时容易出现继承层次过深,对象关系过于复杂的副作用,从而导致代码的可维护性变差。因此,一个经典... 继续阅读 >
202109-09 详解Java实践之适配器模式 目录一、前言二、适配器模式介绍三、案例场景模拟3.1、场景模拟工程3.2、场景简述3.2.1、注册开户MQ3.2.2、内部订单MQ3.2.3、第三方订单MQ3.2.4、查询用户内部下单数量接口3.2.5、查询用户第三方下单首单接口四、代码实现4.1、工程结构4.2、Mq接收消息实现五、适配器模式重构代码5.1、工程结构5.2、代码实现(MQ消息适配)5.2.1、统一的MQ消息体5.2.2、MQ消息体适配类5.2.3、测试适配类5.3、代码实现(接口使用适配)5.3.1、定义统一适... 继续阅读 >
202109-09 详解Java实践之抽象工厂模式 目录一、前言二、开发环境三、抽象工厂模式介绍四、案例场景模拟4.1、场景模拟工程4.2、场景简述4.2.1、模拟单机服务RedisUtils4.2.2、模拟集群EGM4.2.3、模拟集群IIR4.3、单集群代码使用4.3.1、定义使用接口4.3.2、实现调用代码五、代码实现5.1、工程结构5.2、ifelse实现需求5.3、测试验证六、抽象工厂模式重构代码6.1、工程结构6.2、代码实现6.2.1、定义适配接口6.2.2、实现集群使用服务6.2.3、定义抽象工程代理类和实现6.3、... 继续阅读 >
202109-09 详解Java实践之建造者模式 目录一、前言二、开发环境三、建造者模式介绍四、案例场景模拟4.1、场景模拟工程4.2、场景简述4.2.1、物料接口4.2.2、吊顶(ceiling)4.2.3、涂料(coat)4.2.4、地板(floor)4.2.5、地砖(tile)五、代码实现5.1、工程结构5.2、ifelse实现需求5.3、测试验证六、建造者模式重构代码6.1、工程结构6.2、代码实现6.2.1、定义装修包接口6.2.2、装修包实现6.2.3、建造者方法6.3、测试验证七、总结一、前言无论承接什么样的需求,是不是身边总... 继续阅读 >
202109-04 分析Java设计模式之组合模式 目录一、概述二、模式定义三、模式结构四、模式实现五、模式优缺点5.1、优点5.2、缺点六、模式适用场景七、模式总结一、概述我们对于这个图片肯定会非常熟悉,这两幅图片我们都可以看做是一个文件结构,对于这样的结构我们称之为树形结构。在数据结构中我们了解到可以通过调用某个方法来遍历整个树,当我们找到某个叶子节点后,就可以对叶子节点进行相关的操作。我们可以将这颗树理解成一个大的容器,容器里面包含很多的成员... 继续阅读 >
202107-16 详解PHP设计模式之依赖注入模式 目的实现了松耦合的软件架构,可得到更好的测试,管理和扩展的代码用法DatabaseConfiguration被注入DatabaseConnection并获取所需的$config。如果没有依赖注入模式,配置将直接创建DatabaseConnection。这对测试和扩展来说很不好。例子Doctrine2ORM使用依赖注入。例如,注入到Connection对象的配置。对于测试而言,可以轻松的创建可扩展的模拟数据并注入到Connection对象中。Symfony和ZendFramework2已经有... 继续阅读 >
202106-23 详解java设计模式之六大原则 一、单一职责原则1、单一职责定义单一职责原则:一个类只负责一个功能领域中的相应职责,或者可以定义为:就一个类而言,应该只有一个引起它变化的原因。单一职责原则告诉我们:一个类不能太“累”!在软件系统中,一个类承担的职责越多,它被复用的可能性就越小,而且一个类承担的职责过多,就相当于将这些职责耦合在一起,当其中一个职责变化时,可能会影响其他职责的运作,因此要将这些职责进行分离,将不同的职责封装在不同的... 继续阅读 >
202106-19 JAVA初探设计模式的六大原则 前言我想用贴近生活的语句描述一下自己对六种原则的理解。也就是不做专业性的阐述,而是描述一种自己学习后的理解和感受,因为能力一般而且水平有限,也许举的例子不尽妥当,还请谅解原本我是想用JavaScript编写的,但是JavaScript到现在还没有提出接口的概念,而用TypeScript写又感觉普及度还不算特别高,所以还是决定用Java语言编写首先要提的是:六大原则的灵魂是面向接口,以及如何合理地运用接口P1.单一职责原则(SingleRespo... 继续阅读 >
202106-04 详解Django的MVT设计模式 经典的MVC设计模式及其优点MVC即Model-View-Controller(模型-视图-控制器),是经典的软件开发设计模式。**Model(模型)**:简而言之即数据模型。模型不是数据本身(比如数据库里的数据),而是抽象的描述数据的构成和逻辑关系。通常模型包括了数据表的各个字段(比如人的年龄和出生日期)和相互关系(单对单,单对多关系等)。Web开发框架会根据模型的定义来自动生成数据表。View(视图):主要用于显示数据,用来展示... 继续阅读 >
202106-04 PHP设计模式之迭代器模式的使用 一说到这个模式,就不得不提循环语句。在《大话设计模式》中,作者说道这个模式现在的学习意义更大于实际意义,这是为什么呢?当然就是被foreach这货给整得。任何语言都有这种类似的语法可以方便快捷的对数组、对象进行遍历,从而让迭代器模式从高高在上的23大设计模式中的明星慢慢成为了路人。特别是我们这门PHP语言,PHP的强大之处就在于对于数组的灵活操作,本身就是hashmap的结构,自然会有各种方便的数组操作语法,而foreach... 继续阅读 >
202105-25 怎样用Javascript实现单例模式 概述单例模式也称为单体模式,规定一个类只有一个实例,并且提供可全局访问点;在读这篇文章之前,也许你对单例模式的概念感到模糊或者不清楚,但是其实在日常的开发中你肯定用到过单例模式;JavaScript中没有类的定义,单例模式的特点是”唯一“和”全局访问“,那么我们可以联想到JavaScript中的全局对象,利用ES6的let不允许重复声明的特性,刚好符合这两个特点;是的,全局对象是最简单的单例模式;letobj={name:"咸鱼"... 继续阅读 >
202105-25 怎样用Javascript实现建造者模式 概述建造者模式是相对比较简单的一种设计模式,属于创建型模式的一种;定义:将一个复杂的对象分解成多个简单的对象来进行构建,将复杂的构建层与表现层分离,使相同的构建过程可以创建不同的表示模式;优点:建造者模式的封装性比较好,创建对象和构建过程解耦;建造者模式很容易扩展,当我们需要扩展的时候,通过一个新的建造者就可以实现;模式作用:分步创建一个复杂的对象解耦封装过程和具体创建组件无需... 继续阅读 >