自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小鸡炖蘑菇

好记性不如烂博客!豆芽儿长一房高,它也是根菜!

  • 博客(29)
  • 资源 (1)
  • 收藏
  • 关注

原创 非对称加密之数据签名数据摘要

一文了解数据摘要,数据签名

2023-03-28 16:50:22 198

原创 5分钟了解对称加密和非对称加密

对称加密和非对称加密的区别以及常用算法,非对称加密中数字证书的作用

2023-03-24 19:51:34 1358 1

原创 设计模式-行为型之访问者模式

模式动机  在实际使用时,对同一集合对象的操作并不是唯一的,对相同的元素对象可能存在多种不同的操作方式。而且这些操作方式并不稳定,可能还需要增加新的操作,以满足新的业务需求。此时,我们可以考虑访问者模式,访问者模式的目的是封装一些施加于某种数据结构元素之上的操作,一旦这些操作需要修改的话,接受这个操作的数据结构可以保持不变。为不同类型的元素提供多种访问操作方式,且可以在不修改原有系统的情况下增加新的

2015-09-18 22:04:27 694

原创 设计模式-行为型之解释器模式

模式动机  如果在系统中某一特定类型的问题发生的频率很高,此时可以考虑将这些问题的实例表述为一个“语言”中的“句子”,因此可以构建一个解释器,该解释器通过解释这些“句子”来解决这些问题。比如我们需要经常进行字符串的匹配,我们可以把这种匹配算法定义为一种“语言”,说到这里,你应该明白了,我指的这种“语言”则是我们的正则表达式,而一个具体的正则表达式如“/^\d{4}$/”则是我们的“句子”,我们通过解

2015-09-17 22:48:21 672

原创 设计模式-行为型之备忘录模式

模式动机   现在大多数软件都有撤销的功能,快捷键一般都是Ctrl+Z,即我们需要提供一种类似“后悔药”的机制,让软件可以回到之前的状态,因此需要保存用户每一次操作时系统的状态,一旦出现误操作,可以把存储的历史状态取出即可回到之前的状态。备忘录模式是一种给我们的软件提供后悔药的机制,通过它可以使系统恢复到某一特定的历史状态。 模式定义  在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保

2015-09-16 21:56:39 593

原创 设计模式-行为型之中介者模式

模式动机   在面向对象设计中,如果一个对象会影响其他对象,同时也要被其他对象影响,那么我们可以称这两个对象为同事类(Colleague),同事类一般由多个组成,他们之间相互影响,相互依赖。同事类越多,关系越复杂。多个同事类之间互相关联时,他们之间的关系会呈现为复杂的网状结构,如下图:       此时,当其中一个对象发生变化时,与之关联的很多对象都会受到影响,可谓是“牵一发而动全身”。此时我

2015-09-15 23:40:07 520

原创 设计模式-行为型之模板方法模式

模式动机   模板方法模式是基于继承的代码复用基本技术,模板方法模式的结构和用法也是面向对象设计的核心之一。在模板方法模式中,可以将相同的代码放在父类中,而将不同的方法实现放在不同的子类中。在模板方法模式中,我们需要准备一个抽象类,将部分逻辑以具体方法以及具体构造函数的形式实现,然后声明一些抽象方法来让子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现,这就

2015-09-13 18:18:45 875

原创 设计模式-行为型之命令模式

模式动机   在面向对象设计中,通常情况下一个对象调用另一个对象的调用过程是:“创建目标对象实例->设置调用参数->调用目标对象的方法”。但在有些情况下有必要使用一个专门的类对这种调用过程加以封装,我们把这种专门的类称作command类。这样的目的是降低请求发送者与请求接收者彼此之间的耦合性,让对象之间的调用关系更加灵活。这便是命令模式,命令模式可以对发送者和接收者完全解耦,发送者与接收者之间没有直

2015-09-13 11:46:39 430

原创 设计模式-行为型之责任链模式

模式动机   责任链是指一系列的结点连接在一起形成一条链,每个节点有各自的职责。链可以是一条直线、一个环或者一个树形结构,最常见的职责链是直线型,即沿着一条单向的链来传递请求。链上的每一个结点都是请求处理者,职责链模式可以将请求的处理者组织成一条链,并使请求沿着链传递,由链上的处理者对请求进行相应的处理,客户端无须关心请求的处理细节以及请求的传递,只需将请求发送到链上即可。责任链模式的目的就是将请求

2015-09-10 22:26:54 480

原创 设计模式-行为型之策略模式

模式动机   在软件系统中,有许多算法可以实现某一功能,如查找、排序等,一种常用的方法是可以将这些算法写到一个类中,在该类中提供多个方法,每一个方法对应一个具体的查找算法。这种实现方法我们称之为硬编码,如果需要增加一种新的查找算法,需要修改封装算法类的源代码;更换查找算法,也需要修改客户端调用代码。在这个算法类中封装了大量查找算法,该类代码将较复杂,维护较为困难。为了解决这些问题,可以定义一些独立的

2015-09-08 23:48:34 415

原创 设计模式-行为型之状态模式

模式动机   很多情况下,一个对象的行为取决于一个或多个动态变化的属性,这样的属性我们称之为状态。当这样的对象与外部事件产生交互时,其内部状态会随之改变,从而使其行为也发生对应的改变。比如人作为一个对象(Person),假设有一个属性叫做饥饿程度(hungerLevel),有一种行为叫吃饭(eat),当饥饿程度为“非常饿”时,我们吃饭时会“大吃一顿”,当饥饿程度为“很饱”时,我们吃饭时会“只吃一点点

2015-09-06 23:08:32 524

原创 设计模式-行为型之迭代器模式

模式动机   迭代器模式是为容器而生的,作为一个容器对象,肯定是需要对其进行遍历。你可以把遍历方法写到容器对象中去,也可以根本不遍历算法,让使用容器的人自己去实现。然而,第一种方式显然让容器类承担了太多的职责,第二种方式却会将容器的内部细节暴露出来。迭代器模式的出现,成功的解决了这类问题。它不仅提供了遍历容器对象的方法,同时不会暴露容器对象的内部细节,而且如果有需要还可以提供多种遍历方式。使用过ja

2015-09-05 21:20:36 528

原创 设计模式-行为型之观察者模式

模式动机   在软件开发中,我们可能会有这种需求,对象之间建立一种依赖关系,当其中一个对象发生变化时自动通知其他对象,其他对象也做出相应的反应。比如数据库中的触发器,javascript中的onchange()等等。在面向对象中,我们可以通过观察者模式实现类似的功能。在观察者模式中,我们把发生改变的对象称为观察目标,而被通知并做出反应的对象称为观察者,一个观察目标可以对应多个观察者,而且这些观察者之

2015-09-04 20:27:31 473

原创 设计模式-结构型之享元模式

模式动机   万事万物皆对象,使用面向对象技术可以很好地解决一些灵活性或可扩展性问题,但很多时候会增加类的个数和对象的个数。当对象数量太多时,将导致运行代价过高,带来性能上的问题。享元模式正是为解决这一类问题而诞生的。享元模式通过共享技术实现相同或相似对象的重用。   首先,享元模式中有两个概念需要理解,内部状态和外部状态。在享元模式中可以共享的相同内容称为内部状态,而那些不能共享的、需要额外设

2015-09-02 23:37:04 479

原创 设计模式-结构型之装饰模式

模式动机   在我们的系统开发中,我们可能经常会对现有功能进行扩展,会给现有的类增加一些行为。一般有两种机制可供选择:    继承机制:通过继承一个现有的类使得子类在拥有父类方法的同时还可以拥有自身独有的方法。但使用继承实现功能拓展,我们必须可预见这些拓展功能,这些功能是编译时就确定了,是静态的,用户不能控制增加行为的方式和时机。    关联机制:将一个类的对象嵌入另一个对象中,由另一个对象来决

2015-09-01 22:29:18 726

原创 设计模式-结构型之组合模式

模式动机  在软件系统开发中,我们经常会遇到树形结构,比如我们操作系统中的文件系统,如下图:      文件夹里面可以放文件,也可以继续放文件夹,在组合模式中,对于这类对象我们称之为容器对象。文件是最小单元,不能再往里面放东西,对于这类对象我们称之为叶子对象。由于容器对象和叶子对象在功能上的区别,在使用这些对象的客户端代码中必须有区别地对待容器对象和叶子对象,而实际上大多数情况下客户端希望一致地

2015-08-30 15:36:10 476

原创 设计模式-结构型之桥接模式

模式动机  假设现在让你设计一个画图软件,要求是可以画出不同形状的图形,如圆形,正方形,长方形,三角形等等,同时这些图形还可以进行上色,比如红色,绿色,黄色等等,最终得到一个带有颜色的图形。此时,应该如何设计呢?首先,第一种方案是为每一种形状都提供一套各种颜色的版本,通过继承来实现,定义一个抽象图形类Shape,然后所有具体图形类如正方形(Square),圆形(Circle)继承于Shape,然后继

2015-08-29 23:54:55 554

原创 设计模式-结构型之适配器模式

模式动机 适配是指“源”到“目标”能够匹配、兼容,两者之间的中间件就叫适配器。适配器主要是起到“源”到“目标”的一个过渡作用,负责把“源”转换成我们想要的“目标”。 比如,假设我们系统中现在存在了一个Bird(鸟)类,Bird里面有自己的一个fly()方法,还存在一个Tiger(老虎)类,Tiger里面有自己的一个run()方法。同时,我们定义了一个Moveable接口(把“可移动”这种行

2015-08-27 22:13:44 537

原创 设计模式-结构型之外观模式

模式动机 在软件系统中,客户端程序经常会复杂系统的内部子系统之间产生耦合,从而导致客户端程序随子系统的变化而变化,那么如何简化客户端程序跟内部子系统之间的依赖?此时,我们需要引入一个“外观”角色,客户端直接与外观角色进行交互,客户端与子系统之间的复杂关系由外观角色(Facade)来实现和维护。如下图: 模式定义 外部与子系统的通信通过一个统一的外观对象进行,外观模式定义

2015-08-24 22:30:21 419

原创 设计模式-结构型之代理模式

模式动机 在某些时候,有些对象出于权限、安全等各方面的因素不想直接被用户访问,此时需要通过设置一个“代理”对象作为第三者来实现间接访问。代理对象在客户端和目标对象中起到一个中介作用,并且通过代理对象可以去掉客户端不能访问的内容和服务或者增加客户需要的一些额外服务。这便是代理对象的动机。就好比那些明星的经纪人,经纪人就是一个代理对象,想找明星拍广告、拍电影等等,一般都是通过经纪人这个第三者来

2015-08-23 16:08:40 490

原创 设计模式-创建型之原型模式

模式动机 在软件开发中,有时某些对象创建的过程比较复杂,而且需要频繁创建,那么我们可不可以直接Ctrl C再Ctrl V呢?答案是可以的,原型模式就是解决这类问题,它通过复制一个对象本身,从而克隆出多个与原型对象一模一样的对象出来。 模式定义 用原型实例指定创建对象的种类,然后通过复制这个原型对象创建出新的对象,无须知道创建的细节,这便是原型模式。Java中的克隆java中所有

2015-08-20 00:20:20 443

原创 设计模式-创建型之单例模式

模式动机 在软件开发中,对于某些特定的类来说,只存在一个实例尤为重要,比如一个系统中的ID生成器。但如何才能保证这个类只有一个实例同时又容易被访问呢?一个比较好的解决办法是让这个类自身负责创建和保存它的唯一实例,并且它需要提供一个方法,用于获取该唯一实例。模式定义 一个类只有一个实例,这个类在自身内部进行实例化,并把此唯一实例提供给整个系统,即提供一个该实例的访问方法。这个类就叫单例类,这

2015-08-17 22:40:37 490

原创 设计模式-创建型之建造者模式

模式动机 在现实生活中,往往存在一些复杂的对象,它们有很多组成部分。比如一辆汽车,它包括很多个部件,如发动机、轮胎、外壳等等。而对于大部分用户而言,是不关心这些部件是如何装配、组装成一辆汽车的,他要的是一辆可使用的完整的汽车。如下图: 模式定义 在软件开发中,也存在类似的复杂对象,这个对象的属性就像汽车的部件,创建这个对象的过程就像组组装汽车的过程,由于过程复杂,整个过程往往被抽象到

2015-08-13 23:21:58 639

原创 设计模式-创建型之抽象工厂模式

模式动机 在工厂模式中,具体工厂负责生产具体的产品,每一个具体工厂对应一种具体的产品,但有的时候,我们需要一个工厂可以生产多种产品。为了阐述的更加清晰明了,首先引入两个抽象工厂模式中概念:产品等级结构和产品族产品等级结构 比如一个抽象类是电视机,其子类有长虹电视机,创维电视机,TCL电视机,那么电视机抽象类与与具体的某个电视机子类便构成了一个产品等级结构,抽象电视机是父类,具体某个品牌的电视机

2015-08-12 00:17:20 618

原创 设计模式-创建型之工厂模式

模式动机 在上一篇文章《设计模式-创建型之简单工厂模式》中,提到了简单工厂模式最大的缺点就是当需要新增产品时,必须修改工厂类,加入相应的逻辑。在简单工厂模式中,所有的产品都是由一个工厂类负责创建,可能会导致工厂类的逻辑复杂,不便于维护和扩展。因此,为了解决这些问题,工厂模式便诞生了!工厂模式与简单工厂模式最大的区别在于:简单工厂模式只有一个工厂类,工厂模式有多个工厂类,每个产品都有自己单独的工厂

2015-08-10 21:23:32 446

原创 设计模式-创建型之简单工厂模式

模式动机 设想一个简单的场景,现在有一家专门生产汽车的工厂,可以生产奔驰(Benz)和宝马(BMW)。我现在不想知道这些汽车是如何生产出来的,也就是不想了解生产汽车的具体细节,只想简单的通过传入一个参数,比如汽车的名称,这个工厂便能返回一辆与之对应的汽车。如下图: 模式定义 简单工厂模式又叫静态工厂模式。首先,它并不属于23种GOF模式,23种GOF中只有工厂模式和

2015-08-06 23:03:04 485

原创 设计模式-简介

前言 设计模式一直是被我忘了又看,看了又忘。究其原因,首先我觉得是缺乏较多的实践,这个只能是在平时的reading和coding中多多注意了,看看优秀的开源框架如spring,springmvc等用到了哪些模式,以及自己coding的时候有没有用到哪些模式。另外一个很重要的原因,我觉得是我每次看完之后都没有进行相应的梳理和总结。所以这一次决定把自己的一些理解和总结写下来,写一个设计模式系列的博客

2015-07-30 22:54:22 510

原创 UML之类图

前言 类图是UML之中使用频率极高的图,也是非常重要的图。它能描述一个类的详细信息,包括类名,变量,方法等,它还能描述及类与类之间的泛化、实现等关系,是进行软件分析设计甚至开发的重要依据。如果把软件开发当成修建一座大楼,那类图可以算得上是施工设计架构图。作为软件设计师、架构师,我们可以通过类图清晰地设计并展现整个软件的结构,作为开发者,我们可以根据类图以及类图之间的关系进行编码、实现。目录什

2015-07-29 22:32:14 2244

原创 easyUI插件显示中文乱码

easyUI插件显示中文乱码解决方案:加入

2014-02-18 13:38:59 1112

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除