情深不寿 | 慧极必伤
码龄4年
  • 287,244
    被访问
  • 652
    原创
  • 990,043
    排名
  • 255
    粉丝
关注
提问 私信

个人简介:天下古今之庸人,皆以一惰字致败。 天下古今之才人,皆以一傲字致败。

  • 加入CSDN时间: 2018-03-21
博客简介:

引川入海的博客

查看详细资料
个人成就
  • 获得497次点赞
  • 内容获得118次评论
  • 获得1,652次收藏
创作历程
  • 31篇
    2021年
  • 280篇
    2020年
  • 342篇
    2019年
  • 1篇
    2018年
成就勋章
TA的专栏
  • ACM
    344篇
  • C++
    22篇
  • Python
    18篇
  • java
    41篇
  • java多线程
    2篇
  • JVM
  • 设计模式
    24篇
  • Go
    1篇
  • Rust
    1篇
  • Linux
    7篇
  • 算法
    29篇
  • MyBatis
    18篇
  • Spring
    19篇
  • SpringMVC
    11篇
  • SpringBoot
    7篇
  • Dubbo
    1篇
  • SpringCloud
    6篇
  • SpringData
    3篇
  • SpringSecurity
    8篇
  • shiro
    9篇
  • Docker
    1篇
  • RabbitMQ
    7篇
  • Activiti
  • Lucene
    3篇
  • Elasticsearch
    10篇
  • ShardingSphere
  • Git
    5篇
  • SVN
    2篇
  • FastDFS
    1篇
  • GTK
    1篇
  • Qt
    10篇
  • Maven
    6篇
  • MySQL
    5篇
  • Oracle
    6篇
  • Redis
    6篇
  • html & css & JavaScript
    6篇
  • Vue.js
    5篇
  • 模板引擎
    2篇
  • jQuery
    3篇
  • Ajax
    4篇
  • JSON
    1篇
  • Nginx
    6篇
  • Tomcat
    2篇
  • XML
    2篇
  • Bootstrap
    1篇
  • 杂文归纳
    17篇
兴趣领域 设置
  • 大数据
    mysqlhadoophiveredisstormsparketl
  • 数据库管理
    数据仓库
  • 后端
    spring架构
  • 人工智能
    opencv语音识别计算机视觉机器学习深度学习神经网络自然语言处理图像处理nlp数据分析
  • PHP
    php
  • 搜索
    elasticsearch
  • 安全
    系统安全web安全安全架构
  • 服务器
    linux
  • 最近
  • 文章
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

【设计模式】设计模式概述以及分类

1.软件设计模式的产生背景“设计模式”这个术语最初并不是出现在软件设计中,而是被用于建筑领域的设计中。1977 年,美国著名建筑大师、加利福尼亚大学伯克利分校环境结构中心主任克里斯托夫·亚历山大(Christopher Alexander)在他的著作《建筑模式语言:城镇、建筑、构造(A Pattern Language: Towns Building Construction)中描述了一些常见的建筑设计问题,并提出了 253 种关于对城镇、邻里、住宅、花园和房间等进行设计的基本模式。1979 .
原创
发布博客 2021.02.09 ·
191 阅读 ·
0 点赞 ·
0 评论

【设计模式】(二十三)解释器模式(Interpreter Pattern)

1. 解释器模式介绍在软件开发中,会遇到有些问题多次重复出现,而且有一定的相似性和规律性。如果将它们归纳成一种简单的语言,那么这些问题实例将是该语言的一些句子,这样就可以用“编译原理”中的解释器模式来实现了。虽然使用解释器模式的实例不是很多,但对于满足以上特点,且对运行效率要求不是很高的应用实例,如果用解释器模式来实现,其效果是非常好的。解释器(Interpreter)模式的定义:给分析对象定义一个语言,并定义该语言的文法表示,再设计一个解析器来解释语言中的句子。也就是说,用编译语言的方式来分析
原创
发布博客 2021.02.09 ·
83 阅读 ·
1 点赞 ·
0 评论

【设计模式】(二十二)状态模式(State Pattern)

1. 状态模式介绍在软件开发过程中,应用程序中的部分对象可能会根据不同的情况做出不同的行为,我们把这种对象称为有状态的对象,而把影响对象行为的一个或多个动态变化的属性称为状态。当有状态的对象与外部事件产生互动时,其内部状态就会发生改变,从而使其行为也发生改变。如人都有高兴和伤心的时候,不同的情绪有不同的行为,当然外界也会影响其情绪变化。对这种有状态的对象编程,传统的解决方案是:将这些所有可能发生的情况全都考虑到,然后使用 if-else 或 switch-case 语句来做状态判断,再进行不同情况的
原创
发布博客 2021.02.09 ·
115 阅读 ·
0 点赞 ·
0 评论

【设计模式】(二十一)模板方法模式(Template Method Pattern)

1. 模板方法模式介绍在面向对象程序设计过程中,程序员常常会遇到这种情况:设计一个系统时知道了算法所需的关键步骤,而且确定了这些步骤的执行顺序,但某些步骤的具体实现还未知,或者说某些步骤的实现与具体的环境相关。例如,去银行办理业务一般要经过以下4个流程:取号、排队、办理具体业务、对银行工作人员进行评分等,其中取号、排队和对银行工作人员进行评分的业务对每个客户是一样的,可以在父类中实现,但是办理具体业务却因人而异,它可能是存款、取款或者转账等,可以延迟到子类中实现。模板方法模式将解决以上类似的问题。
原创
发布博客 2021.02.08 ·
79 阅读 ·
0 点赞 ·
0 评论

【设计模式】(二十)备忘录模式(Memento Pattern)

1. 备忘录模式介绍每个人都有犯错误的时候,都希望有种“后悔药”能弥补自己的过失,让自己重新开始,但现实是残酷的。在计算机应用中,客户同样会常常犯错误,能否提供“后悔药”给他们呢?当然是可以的,而且是有必要的。这个功能由“备忘录模式”来实现。其实很多应用软件都提供了这项功能,如 Word、记事本、Photoshop、Eclipse 等软件在编辑时按 Ctrl+Z 组合键时能撤销当前操作,使文档恢复到之前的状态;还有在 IE 中的后退键、数据库事务管理中的回滚操作、玩游戏时的中间结果存档功能、数据库与
原创
发布博客 2021.02.08 ·
57 阅读 ·
0 点赞 ·
0 评论

【设计模式】(十九)原型模式(Prototype Pattern)

1. 原型模式介绍在有些系统中,存在大量相同或相似对象的创建问题,如果用传统的构造函数来创建对象,会比较复杂且耗时耗资源,用原型模式生成对象就很高效,就像孙悟空拔下猴毛轻轻一吹就变出很多孙悟空一样简单。原型模式(Prototype Pattern)是用于创建重复的对象,同时又能保证性能。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式是实现了一个原型接口,该接口用于创建当前对象的克隆。当直接创建对象的代价比较大时,则采用这种模式。例如,一个对象需要在一个高代价的数据库操
原创
发布博客 2021.02.08 ·
60 阅读 ·
0 点赞 ·
0 评论

【设计模式】(十八)命令模式(Command Pattern)

1. 命令模式的介绍在软件开发系统中,“方法的请求者”与“方法的实现者”之间经常存在紧密的耦合关系,这不利于软件功能的扩展与维护。例如,想对方法进行“撤销、重做、记录”等处理都很不方便,因此“如何将方法的请求者与实现者解耦?”变得很重要,命令模式就能很好地解决这个问题。比如我们去餐厅吃饭,菜单不是等到客人来了之后才定制的,而是已经预先配置好的。这样,客人来了就只需要点菜,而不是任由客人临时定制。餐厅提供的菜单就相当于把请求和处理进行了解耦,这就是命令模式的体现。命令模式(Command Patt
原创
发布博客 2021.02.07 ·
79 阅读 ·
0 点赞 ·
0 评论

【设计模式】(十七)桥接模式(Bridge Pattern)

1. 桥接模式的介绍在现实生活中,某些类具有两个或多个维度的变化,如图形既可按形状分,又可按颜色分。如何设计类似于 Photoshop 这样的软件,能画不同形状和不同颜色的图形呢?如果用继承方式,m 种形状和 n 种颜色的图形就有 m×n 种,不但对应的子类很多,而且扩展困难。当然,这样的例子还有很多,如不同颜色和字体的文字、不同品牌和功率的汽车、不同性别和职业的男女、支持不同平台和不同文件格式的媒体播放器等。如果用桥接模式就能很好地解决这些问题。桥接模式(Bridge Pattern)是用于把
原创
发布博客 2021.02.06 ·
71 阅读 ·
0 点赞 ·
0 评论

【设计模式】(十六)适配器模式(Adapter Pattern)

在现实生活中,经常出现两个对象因接口不兼容而不能在一起工作的实例,这时需要第三者进行适配。例如,讲中文的人同讲英文的人对话时需要一个翻译,用直流电的笔记本电脑接交流电源时需要一个电源适配器,用计算机访问照相机的 SD 内存卡时需要一个读卡器等。在软件设计中也可能出现:需要开发的具有某种业务功能的组件在现有的组件库中已经存在,但它们与当前系统的接口规范不兼容,如果重新开发这些组件成本又很高,这时用适配器模式能很好地解决这些问题。
原创
发布博客 2021.02.06 ·
62 阅读 ·
0 点赞 ·
0 评论

【设计模式】(十五)建造者模式(Builder Pattern)

在软件开发过程中有时需要创建一个复杂的对象,这个复杂对象通常由多个子部件按一定的步骤组合而成。例如,计算机是由 CPU、主板、内存、硬盘、显卡、机箱、显示器、键盘、鼠标等部件组装而成的,采购员不可能自己去组装计算机,而是将计算机的配置要求告诉计算机销售公司,计算机销售公司安排技术人员去组装计算机,然后再交给要买计算机的采购员。生活中这样的例子很多,如游戏中的不同角色,其性别、个性、能力、脸型、体型、服装、发型等特性都有所差异;还有汽车中的方向盘、发动机、车架、轮胎等部件也多种多样;每封电子邮件的发件人、
原创
发布博客 2021.02.05 ·
77 阅读 ·
0 点赞 ·
1 评论

【设计模式】(十四)访问者模式(Visitor Pattern)

1. 访问者模式的介绍在访问者模式(Visitor Pattern)中,我们使用了一个访问者类,它改变了元素类的执行算法。通过这种方式,元素的执行算法可以随着访问者改变而改变。这种类型的设计模式属于行为型模式。定义:将作用于某种数据结构中的各元素的操作分离出来封装成独立的类,使其在不改变数据结构的前提下可以添加作用于这些元素的新的操作,为数据结构中的每个元素提供多种访问方式。它将对数据的操作与数据结构进行分离,是行为类模式中最复杂的一种模式。在现实生活中,有些集合对象存在多种不同的元素,且每种元
原创
发布博客 2021.02.04 ·
90 阅读 ·
0 点赞 ·
0 评论

【设计模式】(十三)迭代器模式(Iterator Pattern)

1. 迭代器模式的介绍迭代器模式(Iterator Pattern)是 Java 和 .Net 编程环境中非常常用的设计模式。这种模式用于顺序访问集合对象的元素,不需要知道集合对象的底层表示。迭代器模式属于行为型模式,主要是为了关注集合类对象和使用者之间的交互。通过抽象集合类的遍历行为,来成功解耦使用者和集合类对象。迭代器模式的设计思想就是抽象集合类对象的遍历行为,然后屏蔽集合类的内部存储结构和解决不同遍历行为的差异。通过迭代器模式我们可以在对集合进行不同形式的遍历时,最小化减少客户端和集合类的修改。
原创
发布博客 2021.02.04 ·
144 阅读 ·
0 点赞 ·
0 评论

【设计模式】(十二)代理模式(Proxy Pattern)

在有些情况下,一个客户不能或者不想直接访问另一个对象,这时需要找一个中介帮忙完成某项任务,这个中介就是代理对象。例如,购买火车票不一定要去火车站买,可以通过 12306 网站或者去火车票代售点买。又如找女朋友、找保姆、找工作等都可以通过找中介完成。在软件设计中,使用代理模式的例子也很多,例如,要访问的远程对象比较大(如视频或大图像等),其下载要花很多时间。还有因为安全原因需要屏蔽客户端直接访问真实对象,如某单位的内部数据库等。1. 代理模式的介绍在代理模式(Proxy Pattern)中,一个类
原创
发布博客 2021.02.02 ·
81 阅读 ·
0 点赞 ·
0 评论

【java】JDK动态代理实现原理

1. JDK动态代理的简单实现首先我们写个简单的代理实现:package com.siyi.proxypattern;import java.lang.reflect.InvocationHandler;import java.lang.reflect.Method;import java.lang.reflect.Proxy;public class JDKProxy { public static void main(String[] args) { Sub
原创
发布博客 2021.02.02 ·
130 阅读 ·
0 点赞 ·
0 评论

【设计模式】(十一)享元模式(Flyweight Pattern)

在面向对象程序设计过程中,有时会面临要创建大量相同或相似对象实例的问题。创建那么多的对象将会耗费很多的系统资源,它是系统性能提高的一个瓶颈。例如,围棋和五子棋中的黑白棋子,图像中的坐标点或颜色,局域网中的路由器、交换机和集线器,教室里的桌子和凳子等。这些对象有很多相似的地方,如果能把它们相同的部分提取出来共享,则能节省大量的系统资源,这就是享元模式的产生背景。1. 享元模式的介绍享元模式(Flyweight Pattern)主要用于减少创建对象的数量,以减少内存占用和提高性能。这种类型的设计模式
原创
发布博客 2021.02.01 ·
81 阅读 ·
0 点赞 ·
0 评论

【设计模式】(十)组合模式(Composite Pattern)

在现实生活中,存在很多“部分-整体”的关系,例如,大学中的部门与学院、总公司中的部门与分公司、学习用品中的书与书包、生活用品中的衣服与衣柜、以及厨房中的锅碗瓢盆等。在软件开发中也是这样,例如,文件系统中的文件与文件夹、窗体程序中的简单控件与容器控件等。对这些简单对象与复合对象的处理,如果用组合模式来实现会很方便。1. 组合模式介绍组合模式(Composite Pattern),又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类
原创
发布博客 2021.02.01 ·
95 阅读 ·
0 点赞 ·
0 评论

【设计模式】(九)观察者模式(Observer Pattern)

在现实世界中,许多对象并不是独立存在的,其中一个对象的行为发生改变可能会导致一个或者多个其他对象的行为也发生改变。例如,某种商品的物价上涨时会导致部分商家高兴,而消费者伤心;还有,当我们开车到交叉路口时,遇到红灯会停,遇到绿灯会行。这样的例子还有很多,例如,股票价格与股民、微信公众号与微信用户、气象局的天气预报与听众、小偷与警察等。在软件世界也是这样,例如,Excel 中的数据与折线图、饼状图、柱状图之间的关系;MVC 模式中的模型与视图的关系;事件模型中的事件源与事件处理者。所有这些,如果用观察者模式
原创
发布博客 2021.02.01 ·
79 阅读 ·
0 点赞 ·
0 评论

【设计模式】(八)责任链模式(Chain of Responsibility Pattern)

在现实生活中,一个事件需要经过多个对象处理是很常见的场景。例如,采购审批流程、请假流程等。公司员工请假,可批假的领导有部门负责人、副总经理、总经理等,但每个领导能批准的天数不同,员工必须根据需要请假的天数去找不同的领导签名,也就是说员工必须记住每个领导的姓名、电话和地址等信息,这无疑增加了难度。在计算机软硬件中也有相关例子,如总线网中数据报传送,每台计算机根据目标地址是否同自己的地址相同来决定是否接收;还有异常处理中,处理程序根据异常的类型决定自己是否处理该异常;还有 Servlet项目中的Filt..
原创
发布博客 2021.02.01 ·
90 阅读 ·
0 点赞 ·
0 评论

【设计模式】(七)装饰器模式(Decorator Pattern)

上班族大多都有睡懒觉的习惯,每天早上上班时间都很紧张,于是很多人为了多睡一会,就会用方便的方式解决早餐问题。有些人早餐可能会吃煎饼,煎饼中可以加鸡蛋,也可以加香肠,但是不管怎么“加码”,都还是一个煎饼。在现实生活中,常常需要对现有产品增加新的功能或美化其外观,如房子装修、相片加相框等,都是装饰器模式。在软件开发过程中,有时想用一些现存的组件。这些组件可能只是完成了一些核心功能。但在不改变其结构的情况下,可以动态地扩展其功能。所有这些都可以釆用装饰器模式来实现。当然,大家可能觉得通过继承也可以达到上面
原创
发布博客 2021.01.31 ·
106 阅读 ·
1 点赞 ·
1 评论

【设计模式】(六)中介者模式(Mediator Pattern)

在现实生活中,常常会出现好多对象之间存在复杂的交互关系,这种交互关系常常是“网状结构”,它要求每个对象都必须知道它需要交互的对象。例如,每个人必须记住他(她)所有朋友的电话;而且,朋友中如果有人的电话修改了,他(她)必须让其他所有的朋友一起修改,这叫作“牵一发而动全身”,非常复杂。如果把这种“网状结构”改为“星形结构”的话,将大大降低它们之间的“耦合性”,这时只要找一个“中介者”就可以了。如前面所说的“每个人必须记住所有朋友电话”的问题,只要在网上建立一个每个朋友都可以访问的“通信录”就解决了。这样的例
原创
发布博客 2021.01.31 ·
102 阅读 ·
0 点赞 ·
0 评论
加载更多