设计模式
HDGM3
这个作者很懒,什么都没留下…
展开
-
23种设计模式总结篇【理解及应用】
23种设计模式的概念及应用总结原创 2020-11-24 23:43:42 · 953 阅读 · 0 评论 -
行为型设计模式(十一)访问者模式【运行时 or 编译时】
目录一、概念及原理二、实例说明2.1 需求说明2.2 step1 最简单的实现方式2.2 step2 改进--拆分解耦2.3 step3 解决第二步的问题(核心)2.4 step4 继续添加新功能2.5 step5 再次抽象Visitor 接口2.6 访问者模式小结三、双分派机制3.1 单分派机制和双分派机制3.2 java中的单分派机制四、小结五、参考链接一、概念及原理访问者者模式的英文翻译是 Visitor Design Pattern。在 GoF 的《设计模式》一书中,它是这么定义的:Allo原创 2020-11-14 15:35:07 · 432 阅读 · 0 评论 -
行为型设计模式(十)中介模式【地方分权到中央集权】
目录一、概念及原理二、实例说明2.1 航空管制2.2 复杂对话框三、中介模式 VS 观察者模式四、小结五、参考链接一、概念及原理中介模式的英文翻译是 Mediator Design Pattern。在 GoF 中的《设计模式》一书中,它是这样定义的:Mediator pattern defines a separate (mediator) object that encapsulates the interaction between a set of objects and the object原创 2020-11-14 00:13:58 · 256 阅读 · 0 评论 -
行为型设计模式(九)解释器模式【将语法规则拆分成一些小的独立的单元】
目录一、原理和实现二、实例说明三、参考链接一、原理和实现解释器模式的英文翻译是 Interpreter Design Pattern。在 GoF 的《设计模式》一书中,它是这样定义的:Interpreter pattern is used to defines a grammatical representation for a language and provides an interpreter to deal with this grammar.翻译成中文就是:解释器模式为某个语言定原创 2020-11-13 23:57:15 · 150 阅读 · 0 评论 -
行为型设计模式(八)命令模式【王者荣耀的服务端实现】
目录一、概念及原理二、具体实例2.1 游戏开发背景知识2.2 线程内轮询接收请求和处理请求实现三、命令模式 VS 策略模式四、小结五、参考链接一、概念及原理命令模式的英文翻译是 Command Design Pattern。在 GoF 的《设计模式》一书中,定义如下:The command pattern encapsulates a request as an object, thereby letting us parameterize other objects with different原创 2020-11-13 23:31:27 · 383 阅读 · 0 评论 -
行为型设计模式(七)备忘录模式【快照和恢复】
备忘录模式,主要是用来防丢失、撤销、恢复等。目录一、原理和实现二、举例说明2.1 实例需求2.2 通用的实现2.3 内存和时间优化三、小结四、参考链接一、原理和实现GoF 的《设计模式》定义如下:Captures and externalizes an object’s internal state so that it can be restored later, all without violating encapsulation.翻译如下:在不违背封装原则的前提下,捕获一个对象.原创 2020-11-13 13:41:25 · 142 阅读 · 0 评论 -
行为型设计模式(六)迭代器模式【实现一个Java中的迭代器】
编程语言一般都会将迭代器作为基础类库,用来遍历集合,那它是怎么实现的呢?目录一、原理及实现二、具体实现实例2.1 实例需求2.2 Iterator接口定义2.3 具体实现三、迭代器的模式的优势四、遍历集合的时候为什么不能删除集合元素?4.1 未决行为4.2 为什么会出错4.3 如何解决4.4 为什么java里还有remove()五、小结六、参考链接一、原理及实现迭代器模式用来遍历集合对象,集合对象”也可以叫“容器”“聚合对象”,实际上就是包含一组对象的对象,比如数组、链表、树、图、跳表。迭代器模式.原创 2020-11-11 15:33:43 · 356 阅读 · 0 评论 -
行为型设计模式(五)状态模式【超级玛丽要变身】
状态模式一般用来实现状态机,而状态机常用在游戏、工作流引擎等系统开发中。不过,状态机的实现方式有多种,除了状态模式,比较常用的还有分支逻辑法和查表法。今天,详细讲讲这几种实现方式,并且对比一下它们的优劣和应用场景。目录一、状态机二、解决状态机的几种思路2.1 分支逻辑法2.2 查表法2.3 状态模式法三、状态模式总结三、状态模式总结一、状态机有限状态机,英文翻译是 Finite State Machine,缩写为 FSM,简称为状态机。状态机有 3 个组成部分:状态(State)、事件(Event.原创 2020-11-02 13:42:35 · 557 阅读 · 1 评论 -
行为型设计模式(四)职责链模式【一环接一环】
一、概念及原理GoF 的《设计模式》中,它是这么定义的Avoid coupling the sender of a request to its receiver by giving more than one object a chance to handle the request. Chain the receiving objects and pass the request along the chain until an object handles it.翻译成中文就是:将请求的原创 2020-11-02 11:40:52 · 355 阅读 · 0 评论 -
行为型设计模式(三)策略模式【冗长的 if-else?】
策略的定义、创建和使用一、原理及实现GoF 的《设计模式》中的定义:Define a family of algorithms, encapsulate each one, and make them interchangeable. Strategy lets the algorithm vary independently from clients that use it.翻译成中文定义一族算法类,将每个算法分别封装起来,让它们可以互相替换。策略模式可以使算法的变化独立于使用它们的客.原创 2020-10-24 16:19:35 · 158 阅读 · 0 评论 -
行为型设计模式(二)模板模式【给你打个样儿】
两大作用:复用和扩展一、原理及实现GoF 的《设计模式》的定义:Define the skeleton of an algorithm in an operation, deferring some steps to subclasses. Template Method lets subclasses redefine certain steps of an algorithm without changing the algorithm’s structure.翻译成中文模板方法模式.原创 2020-10-24 14:52:43 · 147 阅读 · 0 评论 -
行为型设计模式(一)观察者模式【将观察者和被观察者代码解耦】
进程内、进程间、同步的、异步的几种方式一、原理及通用实现GoF 的《设计模式》的定义:Define a one-to-many dependency between objects so that when one object changes state, all its dependents are notified and updated automatically.翻译成中文在对象之间定义一个一对多的依赖,当一个对象状态改变的时候,所有依赖的对象都会自动收到通知。一般情况下,.原创 2020-10-24 10:32:45 · 338 阅读 · 0 评论 -
结构性设计模式(七)组合模式【树形结构专用】
Compose objects into tree structure to represent part-whole hierarchies.Composite lets client treat individual objects and compositions of objects uniformly.将一组对象组织(Compose)成树形结构,以表示一种“部分 - 整体”的层次结构。组合让客户端(在很多设计模式书籍中,“客户端”代指代码的使用者。)可以统一单个对象和组合对象的处理逻辑。.原创 2020-10-12 00:13:47 · 602 阅读 · 2 评论 -
结构性设计模式(六)享元模式【Java Integer、String 中的应用】
减少运行时对象实例的个数,节省内存目录一、享元模式的原理与实现1.1 原理1.2 实现二、享元模式的应用举例2.1 QQ象棋2.2 文本编辑器三、享元模式 vs 单例、缓存、对象池三、Java Integer、String 中的应用一、享元模式的原理与实现1.1 原理享元”,顾名思义就是被共享的单元。享元模式的意图是复用对象,节省内存,前提是享元对象是不可变对象。具体来讲,当一个系统中存在大量重复对象的时候,我们就可以利用享元模式,将对象设计成享元,在内存中只保留一份实例,供多处代码引用,这样.原创 2020-10-11 23:52:40 · 504 阅读 · 0 评论 -
结构性设计模式(五)门面模式【挑挑拣拣,重新组装】
集中化、简化目录一、概念和实现1.1 都会遇到的痛点1.2 概念二、门面模式有什么用2.1 解决易用性问题2.2 解决性能问题2.3 解决分布式事务问题三、关于接口粒度的小结四、主要参考内容一、概念和实现1.1 都会遇到的痛点如果你平时的工作涉及接口开发,不知道你有没有遇到关于接口粒度的问题呢?为了保证接口的可复用性(或者叫通用性),我们需要将接口尽量设计得细粒度一点,职责单一一点。但是,如果接口的粒度过小,在接口的使用者开发一个业务功能时,就会导致需要调用 n 多细粒度的接口才能完成。调用.原创 2020-09-26 11:54:16 · 126 阅读 · 0 评论 -
结构性设计模式(四)适配器模式【如何把方的变成圆的】
如何把一个方块放到圆洞里原创 2020-09-26 11:28:28 · 1032 阅读 · 0 评论 -
结构性设计模式(三)装饰器模式【给爱用继承的人一个全新的设计思路】
给爱用继承的人一个全新的设计眼界目录原创 2020-09-24 01:23:47 · 479 阅读 · 0 评论 -
结构性设计模式(二)桥接模式【不只改变你的实现,也改变你的抽象】
通过将实现和抽象放在两个不同的类层次中而使它们可以独立改变目录一、概念二、举例说明三、桥接的优点四、桥接的用途和缺点五、哪些地方用到了桥接模式一、概念两种定义二、举例说明三、桥接的优点将实现予以解耦,让它和界面之间不再永久绑定。抽象和实现可以独立扩展,不会影响到对方。对于”具体的抽象类”所做的改变,不会影响到客户四、桥接的用途和缺点适合使用在需要跨越多个平台的图形和窗口系统上当需要用不同的方式改变接口和实现使,你会发现桥接模式很好用桥接模式的缺点是增加了复杂度五、哪些地.原创 2020-09-18 23:36:50 · 155 阅读 · 0 评论 -
结构性设计模式(一)代理模式【不想打扰你,只想默默的帮助你】
hi,那个女孩,这几年过的好吗?不想打扰你,只想默默的帮助你。目录原创 2020-08-30 01:38:47 · 130 阅读 · 0 评论 -
创建型设计模式(四)原型模式【什么是浅拷贝、深拷贝?】
java这种基于类的面向对象的编程语言,比较少用到原型模式。而JavaScript这种基于原型的面向对象编程语言,原型模式很常用。什么叫原型模式?原型模式有哪些应用场景?它的两种实现方式,深拷贝和浅拷贝。目录一、什么叫原型模式?1.1 什么叫对象的创建成本比较大?1.2 一个例子二、深拷贝和浅拷贝2.1 什么是深什么是浅?2.2 如何实现深拷贝2.3 交替使用深浅拷贝三、参考链接一、什么叫原型模式?如果对象的创建成本比较大,而同一个类的不同对象之间差别不大(大部分字段都相同),在这种情况下,我们可以利原创 2020-08-20 23:38:16 · 417 阅读 · 0 评论 -
创建型设计模式(三)建造者模式【有构造函数有set,为啥还要建造者模式】
目录一、为什么要用创建者模式二、如何实现创建者模式三、创建者模式和工厂模式的区别?四、主要参考直接使用构造函数或者配合 set 方法就能创建对象,为什么还需要建造者模式来创建呢?建造者模式和工厂模式都可以创建对象,那它们两个的区别在哪里呢?一、为什么要用创建者模式如果一个类中有很多属性,为了避免构造函数的参数列表过长,影响代码的可读性和易用性,我们可以通过构造函数配合 set() 方法来解决。但是,如果存在下面情况中的任意一种,我们就要考虑使用建造者模式了。我们把类的必填属性放到构造函数中,强制原创 2020-08-19 00:34:02 · 675 阅读 · 0 评论 -
创建型设计模式(二)工厂模式【作坊越来越大,还得建个厂】
目录一、简单工厂(Simple Factory)1.1 第一种实现方式1.2 第二种实现方式二、工厂方法(Factory Method)三、什么时候用简单工厂,什么时候用工厂方法?四、抽象工厂五、哪些地方用到了工厂模式六、小结七、主要参考一般情况下,工厂模式分为三种更加细分的类型:简单工厂、工厂方法和抽象工厂。在这三种细分的工厂模式中,简单工厂、工厂方法原理比较简单,在实际的项目中也比较常用。而抽象工厂的原理稍微复杂点,在实际的项目中相对也不常用。一、简单工厂(Simple Factory)通过一个例原创 2020-08-17 23:54:13 · 258 阅读 · 0 评论 -
创建型设计模式(一)单例模式【栓住对象的N种方法】
目录一、单例的定义二、为什么要使用单例模式2.1 实例一,处理资源访问冲突2.2 表示全局唯一类三、如何实现一个单例模式3.1 饿汉式3.2 懒汉式3.3 双重检验3.4 静态内部类3.5 枚举四、单例有哪些问题?什么时候使用单例4.1 问题4.2 什么时候使用五、扩展知识5.1 单例模式的唯一性5.2 如果实现线程唯一的单例5.3 如果实现集群环境的单例5.4 如果实现一个多例模式?六、主要参考一、单例的定义单例设计模式(Singleton Design Pattern)理解起来非常简单。一个类只允许原创 2020-08-14 01:58:32 · 563 阅读 · 0 评论 -
设计模式基础篇(二)【编程规范和重构】
目录一、重构的几个概念1.1 为什么要重构1.2 重构什么1.3 什么时候重构1.4 如何重构二、单元测试2.1 什么是单元测试?2.2 为什么要写单元测试?2.3 如何编写单元测试?三、代码的可测试性3.1 什么是代码的可测试性?3.2 编写可测试性代码的最有效手段3.3 常见的 Anti-Patterns四、大型重构:解耦4.1 “解耦”为何如此重要?4.2 代码是否需要“解耦”?4.3 如何给代码“解耦”?五、小型重构:编码规范5.1 命名与注释5.2 代码风格5.3 编程技巧5.4 统一编码规范六、原创 2020-07-30 00:56:50 · 518 阅读 · 0 评论 -
设计模式基础篇(一)【设计原则总结】
目录一、SOLID原则:SRP单一职责原则二、SOLID原则:OCP开闭原则2.1 如何理解“对扩展开放,对修改关闭”2.2 如何做到“对扩展开放、修改关闭”三、SOLID原则:LSP里式替换原则3.1 LSP概念3.2 LSP和多态的区别四、SOLID原则:ISP接口隔离原则五、SOLID原则:DIP依赖倒置原则5.1 控制反转5.2 依赖注入5.3 依赖注入框架5.4 依赖反转原则六、KISS保持简单、YAGNI不需要原则七、DRY 不要重复原则八、LOD 迪米特法则8.1 如何理解“高内聚、松耦合”?原创 2020-07-26 00:11:51 · 545 阅读 · 0 评论 -
Java概念基础篇(一)【你应该掌握的几个面向对象的概念】
这里写目录标题一、面向对象概述二、面向对象四大特征三、面向对象 VS 面向过程四、面向对象分析、设计和编程五、接口 VS 抽象类六、基于接口而非实现编程七、多用组合少用集成7.1 为什么不推荐使用继承?7.2 组合相比继承有哪些优势?7.3 如何判断该用组合还是继承?八、贫血模型和充血模型九、思维导图总结十、主要参考一、面向对象概述编程范式"(programming paradigm),也就是如何编写程序的方法论。主流的编程范式(编程风格)有三种:面向过程(procedure oriented P原创 2020-07-24 00:00:38 · 404 阅读 · 0 评论 -
知识框架总述(三)【设计模式】
这里写目录标题一、面向对象二、设计原则三、DBMS系列知识四、实战系列五、思维导图总结六、主要参考一、面向对象封装、抽象、继承、多态面向对象编程 VS 面向过程编程面向对象分析、设计、编程接口 VS 抽象类基于接口而非实现编程多用组合少用继承贫血模型和充血模型二、设计原则数三、DBMS系列知识DBMS的发展历史excel+sql的骚操作websql介绍Redis系列 【1】索引概述 【2】索引原理 【3】索引的使用原则 【4】索引的利弊.SQLite介原创 2020-07-21 00:44:08 · 224 阅读 · 0 评论