
Java设计模式
程序猴jwang
编码辛酸泪,谁解其中味
展开
-
JAVA设计模式(一)设计模式之单例设计模式
前言 熬过了前面的那些磕磕绊绊,我们正式进入到java的精髓,设计模式的讲解,本章来尝鲜单例设计模式范例1.单例设计模式的作用保证一个类只有一个实例,并且提供一个访问该实例的全局访问点由于单例模式只生成一个实例,减少了系统性能开销,当一个对象的产生需要比较多的资源时,如读取配置、产生其他依赖对象时,则可以通过在应用启动时直接产生一个单例对象,然后永久驻留内存的方式来解...原创 2018-10-21 18:13:09 · 318 阅读 · 0 评论 -
JAVA设计模式(二)设计模式之工厂设计模式
前言 本章讲解Java中工厂设计模式的相关概念方法1.概念所谓的工厂,我们可以理解其为一个生产车间。之前我们需要实例化对象的时候都要使用new关键字,这种方式使得调用者和创建者耦合在了一起,不利于程序的维护与扩展。使用工厂设计模式,以前new实例化对象的操作有我们的工厂方法代替,将选择实现类、创建对象统一管理和控制,从而将调用者和我们的实现类解耦。2.工厂设计模式...原创 2019-06-02 16:02:41 · 241 阅读 · 0 评论 -
JAVA设计模式(三)设计模式之建造者设计模式
前言 本章讲解建造者设计模式的基本内容方法1.概念经过前面两种设计模式的学习我们不难发现,之前的创建型模型仅仅适合创建不是很复杂的对象!那么现实生活中,总会有一些比较复杂的对象。比如电脑这个对象,其Monitor(显示器)、Machine(机箱)、KeyBoard(键盘)就是其组成部分,这些组成部分又有其独立的相关属性,且组成的顺序等都有讲究,这时我们需要用到建造者设计模...原创 2019-06-03 22:32:27 · 213 阅读 · 0 评论 -
JAVA设计模式(四)设计模式之原型设计模式
前言 本章讲解原型设计模式的相关概念方法1.概念通过之前的建造者设计模式,我们可以发现可以构建较为复杂的对象。那么,如果在短时间内要求你创建许多个这样的对象呢?那岂不是很难受。原型设计模式帮我们解决了这一问题!2.原型设计模式之深浅复制在讲解原型设计模式之前,我们有必要了解一下克隆(复制)的概念。在Object类中,有一个clone方法用来复制对象,从而避免了...原创 2019-06-04 23:08:19 · 185 阅读 · 0 评论 -
JAVA设计模式(五)设计模式之适配器设计模式
前言 本章讲解适配器模式的相关知识方法1.概念在讲解有关适配器的相关知识之前,有必要了解一下适配器模式的应用场景。在升级老系统的时候,我们发现有一些类中的方法我们舍不得抛弃,但是新系统又不能直接用这些方法。如果编写新的方法的话又会写一些和老系统方法重复的代码,这个时候我们可以利用适配器模式做到新系统的类方法可以调用老系统的类方法,并在上面加以修饰,达到了适配的目的,同...原创 2019-06-05 22:05:15 · 178 阅读 · 0 评论 -
JAVA设计模式(六)设计模式之代理设计模式
前言 本章讲解代理设计模式的相关知识方法注意:本人已经在另外一篇博客:Spring入门(八)静态代理与动态代理(jdk、cglib)详细的介绍了代理设计模式中两种常见的代理方式,请大家移步查阅。...原创 2019-06-10 21:13:35 · 132 阅读 · 0 评论 -
JAVA设计模式(七)设计模式之桥接设计模式
前言 本章讲解桥接模式的相关知识方法1.概念在讲解桥接模式之前,我们先来了解一下生活中的常见例子:桥梁类型,按用途分,有铁路桥、公路桥、公铁两用桥、人行桥、运水桥(渡槽)及其他专用桥梁(如通过管道、电缆等)。按跨越障碍分,有跨河桥、跨谷桥、跨线桥(又称立交桥)、高架桥、栈桥等。如果用Java中的类该如何表示呢?我们可以设计一个桥类,桥类下面有铁路桥、公路桥、人...原创 2019-06-12 22:03:56 · 237 阅读 · 0 评论 -
JAVA设计模式(八)设计模式之组合设计模式
前言 本章讲解组和设计模式的相关知识方法1.概念在一个树形结构中,有简单元素和复杂元素,复杂元素可能包含复杂元素和简单元素。组合模式的意义在于:它在我们树型结构的问题中,模糊了简单元素和复杂元素的概念,客户程序可以向处理简单元素一样来处理复杂元素,从而使得客户程序与复杂元素的内部结构解耦。2.组合模式的实现思路1)建立相应工程2)创建抽象组件类该类...原创 2019-06-13 22:20:40 · 143 阅读 · 0 评论 -
JAVA设计模式(九)设计模式之装饰器设计模式
前言 本章讲解设计模式中装饰器设计模式的相关知识方法1.概念与桥接模式类似,该模式也是为了解决类爆炸的问题。但是装饰器模式关注于功能的扩展,真实的角色比较稳定。桥接模式的真实角色在多维度之间不断的变化,具有不确定性。2.装饰器模式的实现思路1)新建相应工程其中,Car(车)为基本对象,Feature接口为Car类具有的基本功能,SuperCar类为装饰类。...原创 2019-06-14 21:53:06 · 193 阅读 · 1 评论 -
JAVA设计模式(十)设计模式之外观设计模式
前言 本章讲解设计模式中外观设计模式的基本知识方法1.概念迪米特法则(Law of Demeter):又叫作最少知识原则(Least Knowledge Principle 简写LKP),就是说一个对象应当对其他对象有尽可能少的了解,不和陌生人说话。英文简写为: LoD.在我们实际的编程中,总是免不了调用对象的一个方法,那么如果你调用了多个对象的相关方法,那么就要考虑...原创 2019-06-15 21:53:39 · 203 阅读 · 1 评论 -
JAVA设计模式(十一)设计模式之享元设计模式
前言 本章讲解设计模式中享元模式的相关知识方法1.概念不知道大家还记不记得之前学过的单例设计模式!单例模式:保证一个类只有一个实例,并且提供一个访问该实例的全局访问点单例模式保证的是该类的创建及其复杂的条件下,避免重复的创建而采用的设计模式,该类(属性)是固定的!但是日常生活中一些对象之间有一些相对不变的属性和一些总是变化的属性。如围棋棋子:那么关于棋...原创 2019-06-16 10:21:34 · 175 阅读 · 0 评论 -
JAVA设计模式(十二)设计模式之责任链设计模式
前言 本章讲解设计模式中责任链设计模式的相关知识方法1.概念试想下面的场景:某公司审批财务拨款购买设备,小于10万元的货物由主任批示,大于10万且小于100万的货物由经理批示,大于100万的货物由总经理批示。那么如何实现这个逻辑呢?那么我们首先想到的就是使用传统的if...else来进行处理,但是对于业务复杂和维护来说都是相当的困难。为了解决上面提到的问题,我们使用...原创 2019-06-16 15:59:03 · 147 阅读 · 0 评论 -
JAVA设计模式(十三)设计模式之迭代器设计模式
前言 本章讲解设计模式中迭代器设计模式的相关知识方法1.概念说起迭代器,想必大家并不陌生。迭代器的作用在于方便对象的遍历。我们使用List和Set的时候,也有过使用迭代器的经历。那么迭代器设计模式就是具体的实现。2.迭代器设计模式的具体实现思路1)创建相关工程2)创建迭代器接口package iterator;/** * 自定义迭代器类 * ...原创 2019-06-16 21:43:08 · 139 阅读 · 0 评论 -
JAVA设计模式(十四)设计模式之中介者设计模式
前言 本章讲解设计模式中介者设计模式的相关知识方法1.概念在Java的世界中,类与类之间难免有些相互的调用,一旦类之间的关系较为复杂,每个类都持有对方对象的引用,那么管理起来将十分的困难!为了解决这个问题,我们使用中介者设计模式来进行编程,使得有关系的双方可以通过中介进行联系,实现解耦。现实生活中的中介者模式屡见不鲜,比如说租房子吧,这个博主印象比较深刻!2.中介...原创 2019-06-17 22:04:57 · 182 阅读 · 1 评论 -
JAVA设计模式(十五)设计模式之命令设计模式
前言 本章讲解设计模式中命令设计模式的相关知识方法1.概念在软件系统中,行为请求者与行为实现者通常是一种紧耦合的关系,但某些场合,比如需要对行为进行记录、撤销或重做、事务等处理时,这种无法抵御变化的紧耦合的设计就不太合适。比如说老板给员工下达命令,让其执行任务。那么简单的条件下老板的方法可以直接耦合员工对象,调用员工对象进行操作。那么一旦这个命令比较复杂,在执行的前后...原创 2019-06-18 22:51:38 · 126 阅读 · 0 评论 -
JAVA设计模式(十六)设计模式之解释器与访问者设计模式
前言 本章讲解解释器设计模式和访问者设计模式的相关知识方法1.概念这两个设计模式在我们日常的开发中几乎不会使用,所以本次将一笔带过!2.解释器设计模式解释器模式(Interpreter Pattern)提供了评估语言的语法或表达式的方式,它属于行为型模式。这种模式实现了一个表达式接口,该接口解释一个特定的上下文。这种模式被用在 SQL 解析、符号处理引擎等。使...原创 2019-06-19 20:06:07 · 167 阅读 · 0 评论 -
JAVA设计模式(十七)设计模式之策略设计模式
前言 本章讲解设计模式中策略设计模式的相关知识方法1.概念在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象。策略对象改变 context 对象的执行算法。比如,诸葛亮是三国时期的谋士。它每个策略都...原创 2019-06-19 20:47:27 · 143 阅读 · 0 评论 -
JAVA设计模式(十八)设计模式之模板方法设计模式
前言 本章讲解设计模式中模板方法模式的相关知识方法1.概念在我们日常业务开发中,总会涉及到业务流程,而多个业务流程中开始和结尾的代码总是相同的,只有中间业务是不一样的。如果按照传统的方式去开发的话,那么将会写很多冗余的业务代码。如同我们去餐馆吃饭一样,首先都是点菜吃完了买单,那么中间吃些什么我们不得而知,这就涉及了具体的业务逻辑。为了避免重复的编写代码,我们将...原创 2019-06-20 23:59:42 · 186 阅读 · 0 评论 -
JAVA设计模式(十九)设计模式之状态设计模式
前言 本章讲解设计模式中状态设计模式的相关知识方法1.概念大家都知道,我们日常生活和工作开发中都有状态的问题。你比如说马路上的红绿灯,这三个灯光就属于三种状态。再比如说我目前开发过的公文系统,公文的各个审批环节就是状态,拟办、初审、复审、流转、办结等。本次将会使用公文系统中状态作为例子,这里简化为拟办、流转、办结三种状态。在以往的概念里,我们都会使用if...es...原创 2019-06-23 20:55:31 · 200 阅读 · 1 评论 -
JAVA设计模式(二十)设计模式之抽象工厂设计模式
前言 本章讲解设计模式中抽象工厂设计模式的相关知识方法1.概念抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。之前讲到过的工厂设计模式,只是对单一产品的生成。而该模式是对产品族的生成!比如之前举的例子,是工人、教师和学生。...原创 2019-06-24 20:57:40 · 143 阅读 · 0 评论 -
JAVA设计模式(二十一)设计模式之观察者设计模式
前言 本章讲解设计模式中观察者设计模式的相关知识方法1.概念大家先看一张图片:那么我们日常生活中收到的短信就是基于这个模式的。短信发送者为目标,而我们这些短信接收者均为观察者,一旦短信发送了,那么我们的手机上将收到相应的信息。2.观察者模式的设计思路1)创建对应工程2)创建目标类package observer;import java.u...原创 2019-06-25 22:37:30 · 175 阅读 · 0 评论 -
JAVA设计模式(二十二)设计模式之备忘录设计模式
前言 本章讲解设计模式中备忘录设计模式的相关知识方法1.概念在日常开发中,如果我们开发一个公文系统,一篇公文发送出去发现发错了想要撤回来。那么就需要回复该对象原来的状态。使用备忘录模式我们可以十分方便的做到这一点!2.备忘录模式的实现思路1)新建相关工程2)创建源发器类package memento;/** * 源发器类 * @author...原创 2019-06-27 20:36:07 · 346 阅读 · 0 评论 -
JAVA设计模式(二十三)设计模式总结
前言 本章对之前所学习的23种设计模式进行一个简要的总结方法1.概念GOF23分为创建型模式、结构型模式、行为型模式三类。创建型模式分为:单例模式、工厂模式、抽象工厂模式、建造者模式、原型模式 结构型模式分为:适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式 行为型模式分为:模板方法模式、命令模式、迭代器模式、观察者模式、中介者模式、备忘录模式...原创 2019-07-01 20:45:00 · 236 阅读 · 0 评论