计算机基础
文章平均质量分 92
设计模式、算法、代码规范、数学理论、大学课程等、思想、基础学科等,统计学、应用密码学、组合数学等
JoeTwan
keep silence
展开
-
设计模式速记-职责链模式
模式定义职责链模式又称责任链模式,定义如下:为了避免请求发送者与多个请求处理者耦合在一起,将所有请求的处理者通过前一对象记住其下一个对象的引用而连成一条链;当有请求发生时,可将请求沿着这条链传递,直到有对象处理它为止。职责链模式的例子:Struct 拦截器JSP、Servlet的FilterJavascript中的事件冒泡优缺点优点:降低了对象之间的耦合度。该模式使得一个对象无须知道到底是哪一个对象处理其请求以及链的结构,发送者和接收者也无须拥有对方的明确信息。增强了系统的可扩原创 2020-08-21 19:32:55 · 255 阅读 · 0 评论 -
设计模式速记-原型模式
原型模式原型模式定义:用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型相同或相似的新对象。原型模式的例子:java 中 clone()方法打印机通过PDF文件打印出多份纸质书籍原型模式就是通过已有对象创建出相同或者相似的多个对象;原型模式的角色抽象原型类:规定了具体原型对象必须实现的接口。具体原型类:实现抽象原型类的 clone() 方法,它是可被复制的对象。访问类:使用具体原型类中的 clone() 方法来复制新的对象。使用场景资源优化类初始化需要消原创 2020-08-07 09:42:31 · 177 阅读 · 0 评论 -
设计模式速记-享元模式
享元模式享元模式享元模式的定义:运用共享技术来有效地支持大量细粒度对象的复用。它通过共享已经存在的对象来大幅度减少需要创建的对象数量、避免大量相似类的开销,从而提高系统资源的利用率。享元模式的例子有很多,比如:Java 中 String ,如果系统中存在该String 则返回,没有则创建后存储在常量池中。五子棋的黑白子,本质上没有什么区别,可以用一个对象更改属性代替GPS坐标,经度和纬度等等、、通过上述例子可以发现,享元模式针对的对象一般是具有高度重合,并且系统中可能会生成大量类似对原创 2020-08-02 06:51:19 · 153 阅读 · 0 评论 -
设计模式速记-外观模式
设计模式速记-外观模式外观模式外观模式定义:外观模式是一种通过为多个复杂的子系统提供一个一致的接口,而使这些子系统更加容易被访问的模式。该模式对外有一个统一接口,外部应用程序不用关心内部子系统的具体的细节,这样会大大降低应用程序的复杂度,提高了程序的可维护性。外观模式的主要应用在于当一个服务系统中有很多接口,而不同的需求需要有不同的调用流程,这时候在这些数量庞大的接口中寻找就不是一件容易的事,所以使用外观模式将这些接口整合,为某个特定的需求服务,这样用户看到的就是这些整合过的接口,目的也更单纯一原创 2020-08-02 02:50:12 · 193 阅读 · 0 评论 -
设计模式速记-适配器模式
适配器模式适配器模式适配器模式定义:将一个类的接口转换成客户希望的另外一个接口。适配器 模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。适配器模式的一些例子:电脑显示器接口一般有VGA、HDMI、DVI几种,笔记本接口一般为HDMI接口,连接线即为适配器。音乐播放器可播放格式有MP3、MP4等,需要对音乐文件格式进行适配后才能使用。代码编辑器代码高亮功能,需要适配代码语言,如Java、Python,适配后方能关键字高亮显示。Excel 可以查看xls、xlsx、csv文件原创 2020-08-02 02:49:48 · 212 阅读 · 0 评论 -
设计模式速记-桥接模式
桥接模式桥接模式桥接模式定义:桥接模式是将抽象部分与它的实现部分分离,使它们都可以独立地变化。它是一种对象结构型模式,又称为柄体(Handle and Body)模式或接口(Interfce)模式。在生活中有很多桥接模式的例子,比如:在纸上画图,可以选择红色的彩笔,也可以选择绿色的彩笔;自制饮料,可以选择西瓜做原材料,也可以选择草莓做原材料;泡茶,可以选择毛尖茶,也可以选择花茶;这些例子的共同特点都是做一件事,可以选择不同的方法去做,并且做得结果是不同的;所以桥接模式的含义就是,将原创 2020-08-01 07:11:11 · 185 阅读 · 0 评论 -
设计模式速记-模板方法模式
设计模式速记-模板方法模式模板方法模式模板方法模式的定义:定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中,使得子类可以不改变该算法结构的情况下重定义该算法的某些特定步骤。它是一种类行为型模式。简而言之,模板方法模式就是已知并且确定整个算法的流程,但是算法流程中某些过程需要特定情况特定处理。例如要获取音乐最受欢迎排行榜前100名,那么算法的流程分成三步(使用排序方法):将入选音乐汇总将入选音乐排序选择排序榜前100名确定了骨架之后,三个步骤中的任何一部分都可以随着需求更换,原创 2020-08-01 06:20:33 · 148 阅读 · 0 评论 -
设计模式速记-设计模式概述
设计模式速记-设计模式概述一、概述1. 什么是设计模式设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。它描述了在软件设计过程中的一些不断重复发生的问题,以及该问题的解决方案。也就是说,它是解决特定问题的一系列套路,是前辈们的代码设计经验的总结,具有一定的普遍性,可以反复使用。其目的是为了提高代码的可重用性、代码的可读性和代码的可靠性。2. 学习设计模式的意义设计模式的本质是面向对象设计原则的实际运用,是对类的封装性、继承性和多态性以及类的关联关系和组合关系的充分理解。正原创 2020-08-01 06:16:08 · 227 阅读 · 0 评论 -
设计模式速记-命令模式
设计模式速记-命令模式命令模式命令模式定义:将一个请求封装为一个对象,使发出请求的责任和执行请求的责任分割开。这样两者之间通过命令对象进行沟通,这样方便将命令对象进行储存、传递、调用、增加与管理。程序中经常需要把处理逻辑封装为一个处理方法,使用该逻辑时只需要调用方调用此方法即可,所以方法的调用者和方法的实现者有紧密的耦合关系,如果在“调用方-实现方”之间使用命令模式,耦合关系就会减弱比如餐馆点餐系统,服务员将客户提交的菜品订单交给厨师,那么订单就相当于命令,服务员等价于调用者,厨师相当于执行者原创 2020-08-01 06:20:08 · 131 阅读 · 0 评论 -
设计模式速记-解释器模式
设计模式速记-解释器模式解释器模式解释器模式的定义如下:给分析对象定义一个语言,并定义该语言的文法表示,再设计一个解析器来解释语言中的句子。解释器模式顾名思义即为处理一种具有特定文法语言的方法,比如“北京的小孩”、“天津的老人”、“河北的中年人”,这一组表达式都是同一种文法类型的,都是主语(地名)+ 谓语(的)+ 宾语(小孩or老人or中年人)发现这组语言的特点后,可以发现每句话分为三个部分,分别是地名、的、人群,所以如果假设场景为做公交车,小孩和老人免费只有中年人需要交费的话,就需要对原创 2020-07-31 22:49:43 · 191 阅读 · 0 评论 -
设计模式速记-建造者模式
设计模式速记-建造者模式建造者模式建造者模式的定义指将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示,这样的设计模式被称为建造者模式。它是将一个复杂的对象分解为多个简单的对象,然后一步一步构建而成。它将变与不变相分离,即产品的组成部分是不变的,但每一部分是可以灵活选择的。假如一个对象是有很多部分组成的,那么每个部分都可以抽象出独立的一个方法单独建造,这时候就可以使用建造者模式。例如装修的时候需要装修客厅、阳台、卧室等,那么每个部分都可以抽出来单独进行,比如客厅需要放置沙发,原创 2020-07-31 22:49:09 · 71 阅读 · 0 评论 -
设计模式速记-观察者模式
设计模式速记-观察者模式观察者模式观察者模式定义指多个对象间存在一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。这种模式有时又称作发布-订阅模式、模型-视图模式,它是对象行为型模式。简而言之,就是在某个对象A行为属性等发生改变时,与其相关联的对象集D可能也会随之改变,但是对象集D是怎么知道对象A发生改变的呢?这就可以使用观察者模式观察者模式优缺点优点降低了目标与观察者之间的耦合关系,两者之间是抽象耦合关系。目标与观察者之间建立了一套触发机制原创 2020-07-31 22:48:32 · 85 阅读 · 0 评论 -
设计模式速记-工厂模式与抽象工厂模式
设计模式速记-工厂模式与抽象工厂模式一、工厂模式概述1. 什么是工厂模式工厂模式定义:定义一个创建产品对象的工厂接口,将产品对象的实际创建工作推迟到具体子工厂类当中。这满足创建型模式中所要求的“创建与使用相分离”的特点。工厂模式是一种创建型模式,根据创建的产品是具体产品还是工厂可以将工厂模式分为简单工厂模式和工厂方法模式;因为简单工厂模式创建产品时会违反开闭原则,所以简单工厂模式不属于GoF的23种设计模式。(开闭原则:如若创建新产品不可改变现有代码)2. 工厂模式的使用场景工厂模式的使原创 2020-07-31 22:47:48 · 218 阅读 · 0 评论 -
设计模式速记-访问者模式
设计模式速记-访问者模式访问者模式访问者模式是GoF 23种设计模式种最难理解的模式之一,属于行为型模式。访问者模式定义:将作用于某种数据结构中的各元素的操作分离出来封装成独立的类,使其在不改变数据结构的前提下可以添加作用于这些元素的新的操作,为数据结构中的每个元素提供多种访问方式。简单来说,访问者模式就是将数据的数据结构和操作方法分离成不同的类,如Java种集合类Collection和List,Collection封装了对List的操作方法,即将操作方法分离。特点访问者(Visitor)原创 2020-07-31 22:47:03 · 116 阅读 · 0 评论 -
设计模式速记-迭代器模式
设计模式速记-迭代器模式迭代器模式迭代器模式(Iterator),提供一种方法顺序访问一个聚合对象中的各种元素,而又不暴露该对象的内部表示。它可以让用户透过特定的接口巡访容器中的每一个元素而不用了解底层的实现;迭代器模式是一种对象行为型模式;为什么选择迭代器模式如果要访问一个链表中的所有元素,最常用的方式就是顺序访问链表中的各个元素,如果需求更改需要改变遍历方式,比如倒序访问,那么就要修改遍历代码,这就违反了开闭原则,故使用迭代器模式。迭代器模式的优点访问一个聚合对象的内容而无须原创 2020-07-31 22:46:26 · 139 阅读 · 0 评论 -
设计模式速记-单例模式
设计模式速记-单例模式1. 单例模式单例模式属于创建型模式,顾名思义单例模式即“类仅有一个实例”,单例类负责创建自身对象,并且又要保证对象唯一。单例模式有如下几个要点:单例类仅能有一个实例唯一实例必须由单例类自身创建单例类必须对外提供访问此单例对象的接口方法2. 单例模式要点单例模式是最简单的创建型模式之一,但是单例模式有一些问题需要注意,其中最重要的是线程安全问题。在Java中为解决线程安全问题有如下两种方法,分别称为懒汉式单例模式和饿汉式单例模式。懒汉式单例模式懒汉式单例模式原创 2020-07-31 22:45:41 · 144 阅读 · 0 评论 -
设计模式速记-代理模式
设计模式速记-代理模式1.代理模式代理模式是一种结构型模式,代理模式定义:为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。通俗的说,如果客户端不想直接访问另一个对象,那么就可以通过一个“中介对象”来间接进行访问,这种模式就成为代理模式。2.代理模式的优缺点代理模式的优点代理模式在客户端与目标对象之间起到一个中介作用和保护目标对象的作用;代理对象可以扩展目标对象的功能;代理模式能将原创 2020-07-31 22:44:52 · 110 阅读 · 0 评论 -
设计模式速记-策略模式
设计模式速记-策略模式一、策略模式简介1. 什么是策略模式策略模式是一种对象行为型模式,策略模式定义:策略模式针对于一组算法,旨在将这组算法的使用和实现分开。针对一系列具有共同目的的算法,用不同的类将每个算法封装起来,使用算法时通过策略类来进行选择。所以,策略模式简而言之,就是将算法的实现与使用分割开来;使用时必须理解各个算法类的特点特性,通过统一的执行类来使用。2. 策略模式的优缺点策略模式的主要优点如下:多重条件语句不易维护,而使用策略模式可以避免使用多重条件语句。策略模式提供原创 2020-07-31 22:44:11 · 161 阅读 · 0 评论 -
设计模式速记-备忘录模式
设计模式速记-备忘录模式一、备忘录模式简介1. 什么是备忘录模式备忘录模式又称快照模式或者Token模式,属于***行为模式***,备忘录模式定义:在不破坏封闭的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。简而言之,备忘录模式的目的在于记录某对象在某一时刻的状态,当对象状态发生改变后,通过该备忘录再恢复到当前状态的方法模式。2. 用途备忘录模式的用途主要是方便对象回退到之前的某个状态,在生活中有以下例子可以比较清楚的理解备忘录模式的原创 2020-07-31 22:42:54 · 112 阅读 · 0 评论