
重构
文章平均质量分 85
Eistert
文章大部分都是前人总结的知识点,我只是一个搬运工……
展开
-
如何画uml图?
下面主要介绍一下UML类图怎么画一.注释注释就是对类图的补充说明,通过虚线连接被注释的元素。二.类类使用包含类名、属性(field) 和方法(method) 且带有分割线的矩形来表示。三.接口在UML中,接口有两种表示方式:1.普通接口表示法(飞翔)。2.棒棒糖表示法(讲人话),使用一个带有名称的小圆圈来表示,在旁边写上相应接口名称,没有具体接口方法。四.类与类之间的关系1.依赖关系如果A类用到了B类 ,则A依赖于B, 没有B,A编译也不通过。2.关联关系实际上就是类与类转载 2021-11-24 14:23:50 · 25654 阅读 · 3 评论 -
processon画UML类图
参考UML类图(Class Diagram)中类与类之间的关系及表示方式https://blog.csdn.net/a19881029/article/details/8957441【UML 建模】在线UML建模工具 ProcessOn 使用详解https://blog.csdn.net/shulianghan/article/details/47684729类之间五种关系1 依赖关系(Dependency)单向,表示一个类依赖于另一个类的定义,其中一个类的变化将影响另外一个类,是一种“us转载 2021-11-24 12:05:18 · 2743 阅读 · 0 评论 -
设计模式-装饰器模式
我们学习了桥接模式,桥接模式有两种理解方式。第一种理解方式是“将抽象和实现解耦,让它们能独立开发”。这种理解方式比较特别,应用场景也不多。另一种理解方式更加简单,类似“组合优于继承”设计原则,这种理解方式更加通用,应用场景比较多。不管是哪种理解方式,它们的代码结构都是相同的,都是一种类之间的组合关系。今天,我们通过剖析 Java IO 类的设计思想,再学习一种新的结构型模式,装饰器模式。它的代码结构跟桥接模式非常相似,不过,要解决的问题却大不相同。不过还是先看一个简单的demo案例,会比较好..转载 2021-09-14 19:09:18 · 130 阅读 · 0 评论 -
设计模式-桥接模式
上一节我们学习了第一种结构型模式:代理模式。它在不改变原始类(或者叫被代理类)代码的情况下,通过引入代理类来给原始类附加功能。代理模式在平时的开发经常被用到,常用在业务系统中开发一些非功能性需求,比如:监控、统计、鉴权、限流、事务、幂等、日志。今天,我们再学习另外一种结构型模式:桥接模式。桥接模式的代码实现非常简单,但是理解起来稍微有点难度,并且应用场景也比较局限,所以,相当于代理模式来说,桥接模式在实际的项目中并没有那么常用,你只需要简单了解,见到能认识就可以,并不是我们学习的重点。我们依..转载 2021-09-14 17:26:47 · 139 阅读 · 0 评论 -
设计模式-代理模式
说明创建型模式比较好理解,后面的结构型和行为型设计模式不是那么好理解。如果遇到不好理解的设计模式,我一般会在开头举比较简单的Demo案例来帮助理解。代理模式前面几节,我们讲了设计模式中的创建型模式。创建型模式主要解决对象的创建问题,封装复杂的创建过程,解耦对象的创建代码和使用代码。其中,单例模式用来创建全局唯一的对象。工厂模式用来创建不同但是相关类型的对象(继承同一父类或者接口的一组子类),由给定的参数来决定创建哪种类型的对象。建造者模式是用来创建复杂对象,可以通过设置不同的可选参数,“定制转载 2021-09-14 15:58:05 · 96 阅读 · 0 评论 -
设计模式-模板模式
我们再学习另外一种行为型设计模式,模板模式。我们多次强调,绝大部分设计模式的原理和实现,都非常简单,难的是掌握应用场景,搞清楚能解决什么问题。模板模式也不例外。模板模式主要是用来解决复用和扩展两个问题。我们今天会结合 Java Servlet、JUnit TestCase、Java InputStream、Java AbstractList 四个例子来具体讲解这两个作用。模板模式的原理和实现模板模式,全称是模板方法设计模式,英文是 Template Method Design Pattern。在 GoF转载 2021-09-14 14:12:07 · 2527 阅读 · 0 评论 -
设计模式-观察者模式-如何实现一个异步非阻塞的EventBus框架?
我们学习了观察者模式的原理、实现、应用场景,重点介绍了不同应用场景下,几种不同的实现方式,包括:同步阻塞、异步非阻塞、进程内、进程间的实现方式。同步阻塞是最经典的实现方式,主要是为了代码解耦;异步非阻塞除了能实现代码解耦之外,还能提高代码的执行效率;进程间的观察者模式解耦更加彻底,一般是基于消息队列来实现,用来实现不同进程间的被观察者和观察者之间的交互。今天,我们聚焦于异步非阻塞的观察者模式,带你实现一个类似 Google Guava EventBus 的通用框架。等你学完本节之后,你会发现..转载 2021-09-14 10:48:31 · 450 阅读 · 0 评论 -
设计模式-观察者模式【常用】
我们常把 23 种经典的设计模式分为三类:创建型、结构型、行为型。前面我们已经学习了创建型和结构型,从今天起,我们开始学习行为型设计模式。我们知道,创建型设计模式主要解决“对象的创建”问题,结构型设计模式主要解决“类或对象的组合或组装”问题,那行为型设计模式主要解决的就是“类或对象之间的交互”问题。行为型设计模式比较多,有 11 个,几乎占了 23 种经典设计模式的一半。它们分别是:观察者模式、模板模式、策略模式、职责链模式、状态模式、迭代器模式、访问者模式、备忘录模式、命令模式、解释器模式、中介..转载 2021-09-13 20:15:49 · 158 阅读 · 0 评论 -
设计模式-职责链模式
在前面,我们学习了模板模式、策略模式,今天,我们来学习职责链模式。这三种模式具有相同的作用:复用和扩展,在实际的项目开发中比较常用,特别是框架开发中,我们可以利用它们来提供框架的扩展点,能够让框架的使用者在不修改框架源码的情况下,基于扩展点定制化框架的功能。今天,我们主要讲解职责链模式的原理和实现。除此之外,我还会利用职责链模式,带你实现一个可以灵活扩展算法的敏感词过滤框架。下一节,我们会更加贴近实战,通过剖析 Servlet Filter、Spring Interceptor 来看,如何利用职责..转载 2021-09-13 17:51:49 · 328 阅读 · 0 评论 -
设计模式-策略模式
策略模式。在实际的项目开发中,这个模式也比较常用。最常见的应用场景是,利用它来避免冗长的 if-else 或 switch 分支判断。不过,它的作用还不止如此。它也可以像模板模式那样,提供框架的扩展点等等。策略模式的原理与实现策略模式,英文全称是 Strategy Design Pattern。在 GoF 的《设计模式》一书中,它是这样定义的: Define a family of algorithms, encapsulate each one, and make them interch转载 2021-09-13 14:37:36 · 266 阅读 · 0 评论 -
设计模式-迭代器模式的原理和实现
今天,我们学习另外一种行为型设计模式,迭代器模式。它用来遍历集合对象。不过,很多编程语言都将迭代器作为一个基础的类库,直接提供出来了。在平时开发中,特别是业务开发,我们直接使用即可,很少会自己去实现一个迭代器。不过,知其然知其所以然,弄懂原理能帮助我们更好的使用这些工具类,所以,我觉得还是有必要学习一下这个模式。我们知道,大部分编程语言都提供了多种遍历集合的方式,比如 for 循环、foreach 循环、迭代器等。所以,今天我们除了讲解迭代器的原理和实现之外,还会重点讲一下,相对于其他遍历方式,利用迭代器转载 2021-09-13 11:46:06 · 821 阅读 · 0 评论 -
设计模式-七大原则学习笔记
设计模式的目的编写软件过程中,程序员面临着来自耦合性、内聚性以及可维护性、可拓展信、重用性、灵活性等多方面的挑战,设计模式是为了让程序在以下性质上更好:1.代码重用性-相同功能的代码、不用多次编写2.可读性-编程规范性,便于其他程序员的阅读和理解3.可拓展性-当需要增加新的功能时,非常的方便,称为可维护4.可靠性-当我们增加的新的功能后,对原来的功能没有影响5.使程序呈现高内聚、低耦合的特性。设计模式七大原则设计模式原则,其实就是程序员在编程时,应当遵守的原则,也是各种设计模式基础。即设计模原创 2021-09-11 13:49:44 · 183 阅读 · 0 评论 -
设计模式-状态模式
介绍状态机的实现状态模式一般用来实现状态机,而状态机常用在游戏、工作流引擎等系统开发中。不过,状态机的实现方式有多种,除了状态模式,比较常用的还有分支逻辑法和查表法。今天,我们就详细讲讲这几种实现方式,并且对比一下它们的优劣和应用场景。什么是有限状态机有限状态机,英文翻译是 Finite State Machine,缩写为 FSM,简称为状态机。状态机有 3 个组成部分:状态(State)、事件(Event)、动作(Action)。其中,事件也称为转移条件(Transition Condition转载 2021-09-10 10:52:29 · 271 阅读 · 0 评论 -
画图-idea 安装PlantUML和Graphviz画类图及时序图等
背景想用IDEA画UML类图、时序图等各种图。网上搜到了一些IDEA插件,其中PlantUML插件用的比较多。就装上试试效果,其中PlantUML插件需要结合Graphviz插件使用。安装PlantUML插件安装Graphvizmac安装brew安装graphvizbrew install graphviz失败告终macports安装graphviz1.先安装port,根据系统安装macports.选择自己可以用的版本。下载后,双击安装就好了2.命令安装sudo port原创 2021-09-08 10:38:41 · 1579 阅读 · 0 评论 -
重构-项目中存在过多的if-else语句
转载:优雅的替换if-else语句https://blog.csdn.net/fanrenxiang/article/details/104955363场景日常开发,if-else语句写的不少吧??当逻辑分支非常多的时候,if-else套了一层又一层,虽然业务功能倒是实现了,但是看起来是真的很不优雅,尤其是对于我这种有强迫症的程序"猿",看到这么多if-else,脑袋瓜子就嗡嗡的,总想着解锁新姿势:干掉过多的if-else!!!本文将介绍三板斧手段:优先判断条件,条件不满足的,逻辑及时中断返回;转载 2021-09-03 15:12:59 · 112 阅读 · 0 评论