
Java设计模式
喵的波波鱼
爱生活,也爱技术!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
设计模式(1)——七大设计原则、设计模式分类、重构获得模式
目录1.什么是设计模式?1.1 面向对象(1)面向对象背后的两种思维:(2)深入理解面向对象1.2 软件设计复杂的根本原因——变化1.3 人类解决复杂性的通用方法(1)分解(2)抽象1.4 从抽象层面来理解面向对象(1)理解隔离变化(2)各司其职(3)对象是什么?2.什么时候用得到设计模式3.设计模式的七大原则3.1 单一职责原则(1...原创 2019-07-15 22:09:32 · 869 阅读 · 0 评论 -
设计模式(16)——状态变化模式(1)——状态模式
目录0.状态变化模式1.基本介绍2.动机3.类图4.案例:App抽奖活动5.总结0.状态变化模式在组件的构建过程中,某些对象的状态经常面临变化,如何对这些变化进行有效的管理?同时又维持高层模块的稳定?“状态变化”模式为这一问题提供了一种解决方案 典型模式: 状态模式(State) 备忘录模式(Memento) 1.基本介绍定义:允许一个对象在其内部状...原创 2019-07-31 14:56:09 · 496 阅读 · 0 评论 -
设计模式(8)——对象创建模式(2)——原型模式
目录1.基本介绍2.动机3.类图4.案例5.深拷贝与浅拷贝5.1 浅拷贝5.2 深拷贝6.总结1.基本介绍定义:使用原型实例指定创建对象的种类,然后通过拷贝(深拷贝)这些原型来创建新的对象 当原型对象的结构变化,我们不需要修改使用者的代码,只需要修改原型对象本身,而凡是调用了clone方法创建的对象都会在运行时与它相同工作原理通过将一个原型对象传...原创 2019-07-23 11:57:53 · 315 阅读 · 0 评论 -
设计模式(15)——接口隔离模式(4)——中介者模式
目录1.基本介绍2.动机3.类图4.案例5.总结1.基本介绍定义:用一个中介对象来封装(封装变化)一系列的对象交互,中介者使各对象不需要显式的相互引用(编译时依赖->运行时依赖),从而使其耦合松散(管理变化),而且可以独立地改变它们之间的交互2.动机在软件构建过程中,经常会出现多个对象相互关联交互的情况,对象之间常常会维持一种复杂的引用关系,如果遇到一些需求...原创 2019-08-01 19:49:53 · 341 阅读 · 0 评论 -
设计模式(18)——数据结构模式(1)——组合模式
目录0.数据结构模式1.基本介绍2.动机3.类图4.案例:学校、学院、系展示5.组合模式在JDK集合中的应用的源码分析6.总结0.数据结构模式常常有一些组件在内部具有特定的数据结构,如果让客户程序依赖这些特定的数据结构,将极大地破坏组件的复用,这时候,将这些特定数据结构封装在内部,在外部提供统一的接口,来实现与特定数据结构无关的访问,是一种行之有效的解决方案。...原创 2019-08-05 16:28:51 · 506 阅读 · 0 评论 -
设计模式(17)——状态变化模式(2)——备忘录模式
目录1.基本介绍2.动机3.类图4.案例:游戏角色状态恢复问题5.总结1.基本介绍定义:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样以后就可将该对象恢复到原先保存的状态 可以这里理解备忘录模式:现实生活中的备忘录是用来记录某些要去做的事情,或者是记录已经达成的共同意见的事情,以防忘记了,而在软件层面,备忘录模式有着相同的含义,备忘录...原创 2019-08-01 15:50:44 · 253 阅读 · 0 评论 -
设计模式(12)——接口隔离模式(1)——外观模式
目录0.接口隔离模式1.基本介绍2.动机3.类图4.案例:影院管理项目5.外观模式在Mybatis源码中的应用6.总结0.接口隔离模式在组件构建过程中,某些接口之间直接的依赖常常会带来很多问题、甚至根本无法实现。采用添加一层间接(稳定)接口,来隔离本来互相紧密关联的接口是一种常见的解决方案典型模式:外观模式(Facade) 代理模式(Proxy) 中...原创 2019-07-28 09:37:12 · 557 阅读 · 0 评论 -
设计模式(19)——数据结构模式(2)——迭代器模式
目录1.基本介绍2.动机3.类图4.案例5.迭代器模式在ArrayList中应用的源码分析6.总结1.基本介绍定义:提供一种遍历集合元素的统一接口,用一致的方法遍历集合元素,不需要知道集合对象的底层表示,即:不暴露其内部的结构 ·两层含义: 迭代抽象:访问一个聚合对象的内容而无需暴露它的内部表示 迭代多态:为遍历不同的集合结构提供一个统一的接口,从而支持同样...原创 2019-08-06 15:48:44 · 351 阅读 · 0 评论 -
设计模式(20)——数据结构模式(3)——职责链模式
目录1.基本介绍2.动机3.类图4.案例:采购审批项目5.职责链模式在SpringMVC中应用的源码分析6.总结1.基本介绍定义:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系,将这些对象连成一条来链(其实是一个链表),并沿着这条链传递请求,直到有一个对象处理它为止 职责链模式通常每个接收者都包含对另一个接收者的引用,如果一个对象不能处理该...原创 2019-08-06 20:21:35 · 351 阅读 · 0 评论 -
设计模式(21)——行为变化模式(1)——命令模式
目录0.行为变化模式1.基本介绍2.动机3.类图4.案例:遥控器5.命令模式在Spring框架的JDBCTemplate中应用的源码分析6.总结0.行为变化模式在组件的构建过程中,组件行为的变化经常导致组件本身剧烈的变化,“行为变化”模式将组件的行为和组件本身进行解耦,从而支持组件行为的变化,实现两者之间的松耦合命令模式(Command) 访问者模式(Vi...原创 2019-08-06 23:03:43 · 332 阅读 · 0 评论 -
设计模式(22)——行为变化模式(2)——访问者模式
目录1.基本介绍2.动机3.类图4.案例:测评系统5.总结1.基本介绍定义:封装一些作用于某些数据结构的各元素的操作,它可以在不改变数据结构的前提下定义作用于这些元素的新的操作 访问者模式主要将数据结构与数据操作分离,解决数据结构和操作耦合性问题 访问者模式的基本工作原理是:在被访问的类里面加一个对外提供接待访问者的接口 访问者模式主要应用场景是:需要一个对象结构...原创 2019-08-07 08:46:46 · 253 阅读 · 0 评论 -
设计模式(11)——对象性能模式(2)——享元模式
目录1.基本介绍2.动机3.类图4.案例:展示网站5.Integer中应用享元模式的源码分析6.总结1.基本介绍也叫蝇量模式享元模式:享:共享 ,元:对象定义:运用共享技术有效地支持大量细粒度的对象 常用于系统底层开发,解决系统性能问题,像数据库连接池,里面都是创建好的连接对象,在这些连接对象中有我们需要的则直接拿来用,避免重新创建,如果没有我们需要的,则...原创 2019-07-27 10:15:53 · 267 阅读 · 0 评论 -
设计模式(14)——接口隔离模式(3)——适配器模式
目录1.基本介绍2.动机3.三种适配器模式3.1 类适配器3.2 对象适配器3.3 接口适配器模式(1)基本介绍(2)案例4.SpringMVC中HandlerAdapter应用适配器模式的源码5.总结1.基本介绍定义:将一个类的接口转换成客户端期望的另一个接口表示,主要目的是兼容性,让原本因接口不匹配不能一起工作的两个类可以协同工作 也叫包装器(...原创 2019-07-30 06:33:05 · 382 阅读 · 0 评论 -
设计模式(0)——UML类图
目录1.UML是为了软件设计的统一建模语言2.类图2.1 类图的特点2.2 类之间的6大关系:(1)依赖(2)泛化(继承)(3)实现(4)关联(Association)(5)聚合(Aggregation)(6)组合(Composition)1.UML是为了软件设计的统一建模语言设计先行,使用UML图规范了类的生成,也就规范了对象和对象的关系,从而规范...原创 2019-07-16 10:55:40 · 308 阅读 · 0 评论 -
设计模式(2)——组件协作模式(1)——模板方法模式
目录1.组件协作模式简介2.模板方法模式2.1 基本介绍2.2 模板方法模式发生的场景2.3 模板方法模式的原理类图2.4案例案例1:程序库与应用开发之间的关系案例2:豆浆制作问题2.5 模板方法模式的钩子方法3.模板方法模式在Spring框架应用的源码分析代码分析:(1)接口:ConfigurableApplicationContext(2)...原创 2019-07-16 22:04:24 · 545 阅读 · 0 评论 -
设计模式(6)——单一职责模式(2)——桥接模式
目录1.基本介绍2.动机3.类图4.案例5.总结1.基本介绍定义: 将抽象部分与实现部分分离,使它们都可以独立地变化 是一种结构型设计模式 Bridge模式基于类的最小设计原则,通过使用封装、聚合及继承等行为让不同的类承担不同的职责,它的主要特点是把抽象(Abstraction)与行为实现(Implementation)分离开来,从而可以保持各部分的独立性以及...原创 2019-07-18 20:40:17 · 288 阅读 · 0 评论 -
设计模式(7)——对象创建模式(1)——工厂模式(简单工厂模式、工厂方法模式、抽象工厂模式)
目录0.对象创建模式1.简单工厂模式1.1 基本介绍1.2 案例:披萨订购1.3 JDK源码中Calendar类的创建中对简单工厂的应用2.工厂方法模式2.1 基本介绍2.2 动机2.3类图2.4案例:文件分割器2.4总结:3.抽象工厂模式3.1 基本介绍3.2 动机3.3 类图3.4 案例:数据库访问3.5总结0.对...原创 2019-07-22 20:17:30 · 289 阅读 · 0 评论 -
设计模式(3)——组件协作模式(2)——策略模式
目录1.基本介绍2.动机3.类图4.案例案例1:税法计算案例2:鸭子问题5.策略模式在JDK-Arrays应用的源码分析6.总结1.基本介绍定义:定义一系列算法,把它们一个个封装起来,并且使它们可互相替换(变化),该模式使得算法可独立于使用它的客户程序(稳定)而变化(扩展,子类化)此模式让算法的变化独立于使用算法的客户这个模式体现了几个设计原则:...原创 2019-07-17 11:41:29 · 247 阅读 · 0 评论 -
设计模式(9)——对象创建模式(3)——建造者模式
目录1.基本介绍2.动机3.类图4.案例:盖房项目5.总结1.基本介绍定义:将一个复杂对象的构建与其表示相分离,使得同样的构建过程(稳定)可以创建不同的表示(变化) 建造者模式,又叫生成器模式,是一种对象构建模式,它可以将复杂对象的建造过程抽象出来(抽象类别),使这个抽象过程的不同实现方法可以构造出不同表现(属性)的对象 建造者模式是一步一步创建一个复杂的对象,...原创 2019-07-24 12:20:51 · 179 阅读 · 0 评论 -
设计模式(10)——对象性能模式(1)——单例模式(8种写法)
目录0.对象性能模式1.基本介绍2.八种写法解读2.1饿汉式(静态常量)2.2 饿汉式(静态代码块)2.3懒汉式(线程不安全)2.4懒汉式(线程安全,同步方法)2.5懒汉式(线程不安全,同步代码块)2.6.双重检查+volatile2.7 静态内部类2.8 枚举3.单例模式在JDK源码中应用的分析4.总结0.对象性能模式面向对象很...原创 2019-07-20 23:31:58 · 241 阅读 · 0 评论 -
设计模式(13)——接口隔离模式(2)——代理模式
目录1.基本介绍2.动机3.三种代理3.1 静态代理(1)介绍(2)案例3.2 基于接口的动态代理(1)基本介绍(2)案例3.3 Cglib代理(基于子类的动态代理)(1)基本介绍(2)案例4.代理模式几种变体1.基本介绍定义:为一个对象提供一个替身,以控制(隔离,使用接口)对这个对象的访问,即通过代理对象访问目标对象, 好处:可以在目...原创 2019-07-29 18:41:28 · 341 阅读 · 0 评论 -
设计模式(4)——组件协作模式(3)——观察者模式
目录1.基本介绍2.动机3.类图4.案例:天气预报通知5.观察者模式在JDK-Observable中应用的源码分析6.总结1.基本介绍定义:定义对象间的一对多(变化)的依赖关系,让多个观察者对象同时监听某一个主题对象(Subject),当主题对象发生变化时,它的所有依赖者(观察者)都会收到通知并更新原理:主题对象(Subject)一般都有以下三个核心方法...原创 2019-07-17 19:35:20 · 214 阅读 · 0 评论 -
设计模式(5)——单一职责模式(1)——装饰模式
目录0.单一职责模式1.基本介绍2.动机3.类图4.案例案例1:IO流操作普通实现:装饰模式重构上述代码实现:案例2:星巴克咖啡订单项目方案1:方案2:方案3:使用装饰者模式进行重构5.源码分析6.总结0.单一职责模式在软件组件的设计中,如果责任划分的不清晰,使用继承得到的结果往往是随着需求的变化,子类急剧膨胀,同时充斥着重复代码,这...原创 2019-07-18 16:50:04 · 320 阅读 · 0 评论 -
设计模式(23)——领域规则模式——解释器模式
0.领域规则模式在特定领域中,某些变化虽然频繁,但可以抽象1.基本介绍2.动机在软件构建过程中,如果某一特定领域的问题比较复杂,类似结构不断重复出现,如果使用普通的编程方式来实现将面临非常频繁的变化 在这种情况下,将特定领域的问题表达为某种语法规则下的句子,然后构建一个解释器来解释这样的句子,从而达到解决问题的目的3.类图1) Context: 是环境角色,...原创 2019-08-11 08:22:53 · 214 阅读 · 0 评论