设计模式
文章平均质量分 81
Java设计模式
程序猿小张丶
永远保持好奇心,不断探索前沿技术
展开
-
设计模式之桥梁模式
一、 定义桥接(Bridge)是用于把抽象化与实现化解耦,使得二者可以独立变化。这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。这种模式涉及到一个作为桥接的接口,使得实体类的功能独立于接口实现类。这两种类型的类可被结构化改变而互不影响。我们通过下面的实例来演示桥接模式(Bridge Pattern)的用法。其中,可以使用相同的抽象类方法但是不同的桥...原创 2020-01-09 10:02:42 · 148 阅读 · 0 评论 -
设计模式之亨元模式
一、什么是享元模式 说到享元模式,第一个想到的应该就是池技术了,String常量池、数据库连接池、缓冲池等等都是享元模式的应用,所以说享元模式是池技术的重要实现方式。比如我们每次创建字符串对象时,都需要创建一个新的字符串对象的话,内存开销会很大,所以如果第一次创建了字符串对象“adam“,下次再创建相同的字符串”adam“时,只是把它的引用指向”adam“,这样就实现了”adam“字符串再内...原创 2020-01-07 20:56:26 · 283 阅读 · 0 评论 -
设计模式之解释器模式
定义解释器模式是类的行为模式。给定一个语言之后,解释器模式可以定义出其文法的一种表示,并同时提供一个解释器。客户端可以使用这个解释器来解释这个语句中的句子。结构下面就以一个示意性的系统为例,讨论解释器模式的结构。系统的结构图如下所示:抽象表达式角色(Expression):声明一个所有的具体表达式角色都需要实现的抽象接口。这个接口主要是一个interpret()方法,称作解释操作。终...原创 2020-01-06 20:16:19 · 91 阅读 · 0 评论 -
设计模式之状态模式
定义状态模式,又称为状态对象模式(Pattern of Object for States),状态模式是对象的行为模式。状态模式允许一个对象在其内部状态改变的时候改变其行为,这个对象看上去就像是改变了它的类一样。状态模式的结构用一句话来表述,状态模式把所研究的对象的行为包装在不同的状态对象里,每一个状态对象都属于一个抽象状态类的一个子类。状态模式的意图是让一个对象在其内部状态改变的时候,其...原创 2020-01-03 17:28:29 · 150 阅读 · 0 评论 -
设计模式之访问者模式
概述表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新的操作。访问者模式的结构访问者模式适用于数据结构相对未定的系统,它把数据结构和作用于结构上的操作之间的耦合解脱开,使得操作集合可以相对自由地演化。数据结构的每一个节点都可以接受一个访问者的调用,此节点向访问者对象传入节点对象,而访问者对象则反过来执行节点对象的操作。这样的过程叫做“双重分派...原创 2020-01-02 17:51:28 · 241 阅读 · 0 评论 -
设计模式之备忘录模式
定义备忘录模式(Memento Pattern)用来恢复一个对象的状态到以前的状态。 备忘录模式下属于行为模式的类别。uml备忘录模式主要包含入下几个角色:Originator(原发器):它是一个普通类,可以创建一个备忘录,并储存该类当前的一些内部状态,也可以使用备忘录来恢复其内部状态,一般将需要保存内部状态的类设计为原发器。Memento(备忘录):存储原发器的内部状态,根据原发器...原创 2020-01-01 17:24:38 · 169 阅读 · 0 评论 -
设计模式之门面模式
前言《三国演义》中有曰:刘备、诸葛亮趁曹操赤壁之战失利,大肆扩充地盘,先后占领荆州大部地区,引起东吴孙权的警惕。为了限制刘备势力的发展,鲁肃奉命向刘备讨还荆州,但遭到拒绝。东吴大都督周瑜向孙权献计:趁刘备的甘夫人病故,用孙权的妹妹孙仁为诱饵,将刘备“赚到南徐,妻子不能勾得,幽囚在狱中”。 但是,这个诡计被诸葛亮一眼识破。他将计就计,让刘备“择日便去就亲”,并派赵云前去保护,并给了赵云三个锦囊,教...原创 2019-12-31 16:28:28 · 162 阅读 · 0 评论 -
设计模式之观察者模式
什么是观察者模式观察者一般可以看做是第三者,比如在学校上自习的时候,大家肯定都有过交头接耳、各种玩耍的经历,这时总会有一个“放风”的小伙伴,当老师即将出现时及时“通知”大家老师来了。再比如,拍卖会的时候,大家相互叫价,拍卖师会观察最高标价,然后通知给其它竞价者竞价,这就是一个观察者模式。对于观察者模式而言,肯定有观察者和被观察者之分。比如在一个目录下建立一个文件,这时系统会通知目录管理器增加目...原创 2019-12-30 21:01:54 · 254 阅读 · 0 评论 -
设计模式之组合模式
概念合成模式属于对象的结构模式,有时又叫做“部分——整体”模式。合成模式将对象组织到树结构中,可以用来描述整体与部分的关系。合成模式可以使客户端将单纯元素与复合元素同等看待。合成模式合成模式把部分和整体的关系用树结构表示出来。合成模式使得客户端把一个个单独的成分对象和由它们复合而成的合成对象同等看待。比如,一个文件系统就是一个典型的合成模式系统。下图是常见的计算机XP文件系统的一部分。...原创 2019-12-28 17:31:49 · 129 阅读 · 1 评论 -
设计模式之迭代器模式
迭代器模式定义迭代器模式(Iterator),提供一种方法顺序访问一个聚合对象中的各种元素,而又不暴露该对象的内部表示。Java 开发过程中遍历是常用的。如下边程序for(int i =0 ;i<arr.length;i++){ System.out.println(arr[i]);}for语句中i++每次循环自增1,迭代到下一元素。将循环变量的作用抽象化,通用化后形成的...原创 2019-12-27 17:46:24 · 258 阅读 · 0 评论 -
设计模式之适配器模式
适配器模式在开发过程中,使用一个已经存在的类,而他的接口不符合我们的需求。这个时候我们本着开闭原则,要创建一个既符合我们需求又实现了已存在的接口的类,这个类可以把其他不相关或不可预见的类协同起来一起工作。我们创建的这个类就是适配器类,起到了一个转换的作用。适配器模式有类型的适配器模式和对象适配器模式两种实现方式。面向类的适配器模式面向类的适配器实现起来并不复杂,主要的思想就是靠继承来实现适...原创 2019-12-26 17:53:14 · 169 阅读 · 0 评论 -
设计模式之策略模式
策略模式定义Strategy模式也叫策略模式是行为模式之一,它对一系列的算法加以封装,为所有算法定义一个抽象的算法接口,并通过继承该抽象算法接口对所有的算法加以封装和实现,具体的算法选择交由客户端决定(策略)。Strategy模式主要用来平滑地处理算法的切换 。策略模式的结构封装类:也叫上下文,对策略进行二次封装,目的是避免高层模块对策略的直接调用。抽象策略:通常情况下为一个接口,当各个实...原创 2019-12-25 21:20:16 · 149 阅读 · 0 评论 -
设计模式之装饰模式
前言:我们都去过奶茶店买过奶茶吧,一种奶茶可能有很多不同的产品,同一种产品也有很多不同的口味。我们去买的时候,都会发现我们的的奶茶是现场调制的,奶茶店会根据已有的很多奶茶,添加不同的口味。再比如新买的房子去装修,房子是不会变的,但是我们可以装修成不同的风格。这一过程就是装饰过程。其思想就是装饰模式。这篇文章将通过案例对装饰模式有一个了解和分析。认识装饰器模式我们先给出装饰模式的概念,再去分析...原创 2019-12-24 17:36:43 · 233 阅读 · 0 评论 -
设计模式之责任链模式
引言现在的网络小说套路大概是这样的,小喽啰惹上主角,主角霸气侧漏,打跑了;小喽啰找来门中厉害的亲爹,亲爹上场,过了两招一看打不过,一起跑路;但这口气咽不下,一咬牙找来爷爷(一般是长老或者宗主),宗主那当然厉害了,主角打不过,狼狈逃命,下定功夫苦加修炼又或者奇遇连连,功力大增,杀上山门怒杀全宗,报仇雪恨。这种自己打不过,找爸爸,爸爸打不过找爷爷的模式就是责任链模式。什么是责任链模式很多情况...原创 2019-12-23 17:57:28 · 146 阅读 · 0 评论 -
设计模式之命令模式
命令模式的概念命令模式属于对象的行为模式。命令模式又称为行动(Action)模式或交易(Transaction)模式。命令模式把一个请求或者操作封装到一个对象中。命令模式允许系统使用不同的请求把客户端参数化,具有请求排队或者记录请求日志,提供命令的撤销和恢复的功能。命令模式可以将请求发送者和接收者完全解耦,发送者与接收者之间没有直接引用关系,发送请求的对象只需要知道如何发送请求,而不必知道如...原创 2019-12-21 17:47:46 · 108 阅读 · 0 评论 -
设计模式之六大原则
1.单一职责原则每一个类只负责一个方法,降低类的复杂性,增强类的易读性、可维护性2.开闭原则需要增加某个功能时,不要在原有类的基础上去修改代码,在原有的基础上去扩展,用开闭原则最好的方法就是抽象,这样未来在增加某个功能时,可在原有的基础上实现,不改变原代码3.里式替换原则子类可以扩展父类原有的功能,但是不能替换掉父类原有的功能,增强代码的健壮性4.依赖倒置原则上层模块不能依赖下层模块...原创 2019-12-12 18:12:24 · 283 阅读 · 0 评论 -
设计模式之中介者模式
中介者模式(Mediator)定义用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。中介者模式(Mediator)的适用性一组对象以定义良好但是复杂的方式进行通信,产生的相互依赖关系结构混乱且难以理解。一个对象引用其他很多对象并且直接与这些对象通信,导致难以复用该对象。想定制一个分布在多个类中的行为,但又不想生...原创 2019-12-20 17:43:00 · 114 阅读 · 0 评论 -
设计模式之原型模式
原型模式的定义原型(Prototype)模式的定义如下:用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型相同或相似的新对象。在这里,原型实例指定了要创建的对象的种类。用这种方式创建对象非常高效,根本无须知道对象创建的细节。原型模式的结构由于 java 提供了对象的 clone() 方法,所以用 Java 实现原型模式很简单。模式的结构原型模式包含以下主要角色。抽象原型类:...原创 2019-12-19 19:32:54 · 191 阅读 · 0 评论 -
设计模式之代理模式
代理模式是给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用,通俗的来讲代理模式就是我们生活中常见的中介。打个比方说:我要买房,但是我对该地区房屋的信息掌握的不够全面,希望找一个更熟悉的人(中介)去帮我找,此处的代理就是这个意思。代理类分为静态代理类和动态代理类:静态代理1.定义一个接口public interface Source { void method();...原创 2019-12-18 18:03:01 · 115 阅读 · 0 评论 -
设计模式之建造者模式
建造者模式是日常开发中比较常见的设计模式,它的主要作用就是将复杂事物创建的过程抽象出来,该抽象的不同实现方式不同,创建出的对象也不同。通俗的讲,创建一个对象一般都会有一个固定的步骤,这个固定的步骤我们把它抽象出来,每个抽象步骤都会有不同的实现方式,不同的实现方式创建出的对象也将不同。举个常见的例子,想必大家都买过电脑,电脑的生产或者组装其实就是属于建造者模式,我们知道,电脑的生产都需要安装CPU、...原创 2019-12-17 18:58:39 · 147 阅读 · 0 评论 -
设计模式之模板模式
模板模式模板模式(Template Pattern),定义一个操作中算法的骨架,而将一些步骤延迟到子类中,模板方法使得子类可以不改变算法的结构,只是重定义该算法的某些特定步骤。这种类型的设计模式属于行为型模式。模板模式解决的问题一些方法通用,却在每一个子类都重新写了这一方法,带来大量重复的代码的问题。相同的部分父类给出统一的模板,不同的部分,子类进行重写。命令模式模式角色Abstrac...原创 2019-12-16 17:58:04 · 126 阅读 · 0 评论 -
设计模式之工厂模式
1.简单工厂模式:简单工厂就是对于一个基本抽象接口有多个不同的实例,使用一个工厂去决定到底实例化哪个类。代码分析:(1)创建基本抽象接口** * 车类的抽象接口 */public interface Car { //返回汽车的信息 String getCar();(2)创建不同的实例化类/** * 大汽车类 */public class BigCar ...原创 2019-12-14 18:52:06 · 146 阅读 · 0 评论 -
设计模式之单例模式
单例模式的定义确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。使用场景避免产生多个对象消耗过多的资源,或者某种类型的对象只应该有且只有一个。对IO、数据库、网络、图片、SharePreference等的访问。需要定义大量的静态常量和静态方法,例如Utils类。唯一序列号生成的场合。需要一个共享访问点或者共享数据的场合,例如全局的计数器。UML图实现单例模式......原创 2019-12-13 17:57:34 · 329 阅读 · 0 评论