Yang's Blog

Yang's Blog

行为型模式(二)
发表于2024-10-14|Java设计模式
6.7 中介者模式6.7.1 概述一般来说,同事类之间的关系是比较复杂的,多个同事类之间互相关联时,他们之间的关系会呈现为复杂的网状结构,这是一种过度耦合的架构,即不利于类的复用,也不稳定。例如在下左图中,有六个同事类对象,假如对象1发生变化,那么将会有4个对象受到影响。如果对象2发生变化,那么将会有5个对象受到影响。也就是说,同事类之间直接关联的设计是不好的。 如果引入中介者模式,那么同事类之间的关系将变为星型结构,从下右图中可以看到,任何一个类的变动,只会影响的类本身,以及中介者,这样就减小了系统的耦合。一个好的设计,必定不会把所有的对象关系处理逻辑封装在本类中,而是使用一个专门的类来管理那些不属于自己的行为。 定义: 又叫调停模式,定义一个中介角色来封装一系列对象之间的交互,使原有对象之间的耦合松散,且可以独立地改变它们之间的交互。 6.7.2 结构中介者模式包含以下主要角色: 抽象中介者(Mediator)角色:它是中介者的接口,提供了同事对象注册与转发同事对象信息的抽象方法。 具体中介者(ConcreteMediator)角色:实现中介者接口,定义一个 Lis...
行为型模式(一)
发表于2024-10-14|Java设计模式
6,行为型模式行为型模式用于描述程序在运行时复杂的流程控制,即描述多个类或对象之间怎样相互协作共同完成单个对象都无法单独完成的任务,它涉及算法与对象间职责的分配。 行为型模式分为类行为模式和对象行为模式,前者采用继承机制来在类间分派行为,后者采用组合或聚合在对象间分配行为。由于组合关系或聚合关系比继承关系耦合度低,满足“合成复用原则”,所以对象行为模式比类行为模式具有更大的灵活性。 行为型模式分为: 模板方法模式 策略模式 命令模式 职责链模式 状态模式 观察者模式 中介者模式 迭代器模式 访问者模式 备忘录模式 解释器模式 以上 11 种行为型模式,除了模板方法模式和解释器模式是类行为型模式,其他的全部属于对象行为型模式。 6.1 模板方法模式6.1.1 概述在面向对象程序设计过程中,程序员常常会遇到这种情况:设计一个系统时知道了算法所需的关键步骤,而且确定了这些步骤的执行顺序,但某些步骤的具体实现还未知,或者说某些步骤的实现与具体的环境相关。 例如,去银行办理业务一般要经过以下4个流程:取号、排队、办理具体业务、对银行工作人员进行评分等,其中取号、排队和对银行工作人员...
结构型模式
发表于2024-10-12|Java设计模式
5,结构型模式结构型模式描述如何将类或对象按某种布局组成更大的结构。它分为类结构型模式和对象结构型模式,前者采用继承机制来组织接口和类,后者釆用组合或聚合来组合对象。 由于组合关系或聚合关系比继承关系耦合度低,满足“合成复用原则”,所以对象结构型模式比类结构型模式具有更大的灵活性。 结构型模式分为以下 7 种: 代理模式 适配器模式 装饰者模式 桥接模式 外观模式 组合模式 享元模式 5.1 代理模式5.1.1 概述由于某些原因需要给某对象提供一个代理以控制对该对象的访问。这时,访问对象不适合或者不能直接引用目标对象,代理对象作为访问对象和目标对象之间的中介。 Java中的代理按照代理类生成时机不同又分为静态代理和动态代理。静态代理代理类在编译期就生成,而动态代理代理类则是在Java运行时动态生成。动态代理又有JDK代理和CGLib代理两种。 5.1.2 结构代理(Proxy)模式分为三种角色: 抽象主题(Subject)类: 通过接口或抽象类声明真实主题和代理对象实现的业务方法。 真实主题(Real Subject)类: 实现了抽象主题中的具体业务,是代...
创建型模式
发表于2024-10-12|Java设计模式
4,创建型模式创建型模式的主要关注点是“怎样创建对象?”,它的主要特点是“将对象的创建与使用分离”。 这样可以降低系统的耦合度,使用者不需要关注对象的创建细节。 创建型模式分为: 单例模式 工厂方法模式 抽象工厂模式 原型模式 建造者模式 4.1 单例设计模式单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。 4.1.1 单例模式的结构单例模式的主要有以下角色: 单例类。只能创建一个实例的类 访问类。使用单例类 4.1.2 单例模式的实现 单例设计模式分类两种: ​ 饿汉式:类加载就会导致该单实例对象被创建 ​ 懒汉式:类加载不会导致该单实例对象被创建,而是首次使用该对象时才会创建 饿汉式-方式1(静态变量方式) 12345678910111213141516/** * 饿汉式 * 静态...
设计模式概述
发表于2024-10-12|Java设计模式
1,设计模式概述1.1 软件设计模式的产生背景“设计模式”最初并不是出现在软件设计中,而是被用于建筑领域的设计中。 1977年美国著名建筑大师、加利福尼亚大学伯克利分校环境结构中心主任克里斯托夫·亚历山大(Christopher Alexander)在他的著作《建筑模式语言:城镇、建筑、构造》中描述了一些常见的建筑设计问题,并提出了 253 种关于对城镇、邻里、住宅、花园和房间等进行设计的基本模式。 1990年软件工程界开始研讨设计模式的话题,后来召开了多次关于设计模式的研讨会。直到1995 年,艾瑞克·伽马(ErichGamma)、理査德·海尔姆(Richard Helm)、拉尔夫·约翰森(Ralph Johnson)、约翰·威利斯迪斯(John Vlissides)等 4 位作者合作出版了《设计模式:可复用面向对象软件的基础》一书,在此书中收录了 23 个设计模式,这是设计模式领域里程碑的事件,导致了软件设计模式的突破。这 4 位作者在软件开发领域里也以他们的“四人组”(Gang of Four,GoF)著称。 1.2 软件设计模式的概念软件设计模式(Software...
SpringMVC-执行流程
发表于2024-09-17|JavaSpringMVC
十三、SpringMVC执行流程1、SpringMVC常用组件 DispatcherServlet:前端控制器,不需要工程师开发,由框架提供 作用:统一处理请求和响应,整个流程控制的中心,由它调用其它组件处理用户的请求 HandlerMapping:处理器映射器,不需要工程师开发,由框架提供 作用:根据请求的url、method等信息查找Handler,即控制器方法 Handler:处理器,需要工程师开发 作用:在DispatcherServlet的控制下Handler对具体的用户请求进行处理 HandlerAdapter:处理器适配器,不需要工程师开发,由框架提供 作用:通过HandlerAdapter对处理器(控制器方法)进行执行 ViewResolver:视图解析器,不需要工程师开发,由框架提供 作用:进行视图解析,得到相应的视图,例如:ThymeleafView、InternalResourceView、RedirectView View:视图 作用:将模型数据通过页面展示给用户 2、DispatcherServlet初始化过程Dispatche...
SpringMVC-消息转换器、拦截器、异常处理
发表于2024-09-17|JavaSpringMVC
八、HttpMessageConverterHttpMessageConverter,报文信息转换器,将请求报文转换为Java对象,或将Java对象转换为响应报文 HttpMessageConverter提供了两个注解和两个类型:@RequestBody,@ResponseBody,RequestEntity, ResponseEntity 1、@RequestBody@RequestBody可以获取请求体,需要在控制器方法设置一个形参,使用@RequestBody进行标识,当前请求的请求体就会为当前注解所标识的形参赋值 12345<form th:action="@{/testRequestBody}" method="post"> 用户名:<input type="text" name="username"><br> 密码:<input type="password" name="passw...
SpringMVC-RESTful
发表于2024-09-17|JavaSpringMVC
七、RESTful1、RESTful简介REST:Representational State Transfer,表现层资源状态转移。 a>资源资源是一种看待服务器的方式,即,将服务器看作是由很多离散的资源组成。每个资源是服务器上一个可命名的抽象概念。因为资源是一个抽象的概念,所以它不仅仅能代表服务器文件系统中的一个文件、数据库中的一张表等等具体的东西,可以将资源设计的要多抽象有多抽象,只要想象力允许而且客户端应用开发者能够理解。与面向对象设计类似,资源是以名词为核心来组织的,首先关注的是名词。一个资源可以由一个或多个URI来标识。URI既是资源的名称,也是资源在Web上的地址。对某个资源感兴趣的客户端应用,可以通过资源的URI与其进行交互。 b>资源的表述资源的表述是一段对于资源在某个特定时刻的状态的描述。可以在客户端-服务器端之间转移(交换)。资源的表述可以有多种格式,例如HTML/XML/JSON/纯文本/图片/视频/音频等等。资源的表述格式可以通过协商机制来确定。请求-响应方向的表述通常使用不同的...
SpringMVC入门
发表于2024-09-17|JavaSpringMVC
一、SpringMVC简介1、什么是MVCMVC是一种软件架构的思想,将软件按照模型、视图、控制器来划分 M:Model,模型层,指工程中的JavaBean,作用是处理数据 JavaBean分为两类: 一类称为实体类Bean:专门存储业务数据的,如 Student、User 等 一类称为业务处理 Bean:指 Service 或 Dao 对象,专门用于处理业务逻辑和数据访问。 V:View,视图层,指工程中的html或jsp等页面,作用是与用户进行交互,展示数据 C:Controller,控制层,指工程中的servlet,作用是接收请求和响应浏览器 MVC的工作流程:用户通过视图层发送请求到服务器,在服务器中请求被Controller接收,Controller调用相应的Model层处理请求,处理完毕将结果返回到Controller,Controller再根据请求处理的结果找到相应的View视图,渲染数据后最终响应给浏览器 2、什么是SpringMVCSpringMVC是Spring的一个后续产品,是Spring的一个子项目 SpringMVC 是 Spring 为表述层开...
Spring:数据校验
发表于2024-09-12|JavaSpring
10、数据校验:Validation 10.1、Spring Validation概述在开发中,我们经常遇到参数校验的需求,比如用户注册的时候,要校验用户名不能为空、用户名长度不超过20个字符、手机号是合法的手机号格式等等。如果使用普通方式,我们会把校验的代码和真正的业务处理逻辑耦合在一起,而且如果未来要新增一种校验逻辑也需要在修改多个地方。而spring validation允许通过注解的方式来定义对象校验规则,把校验和业务逻辑分离开,让代码编写更加方便。Spring Validation其实就是对Hibernate Validator进一步的封装,方便在Spring中使用。 在Spring中有多种校验的方式 第一种是通过实现org.springframework.validation.Validator接口,然后在代码中调用这个类 第二种是按照Bean Validation方式来进行校验,即通过注解的方式。 第三种是基于方法实现校验 除此之外,还可以实现自定义校验 10.2、实验一:通过Validator接口实现第一步 创建子模块 spring6-validator 第...
1…456…10
avatar
Yang
萌新打怪升级中......
文章
99
标签
221
分类
21
Follow Me
公告
This is my Blog
最新文章
对象与常用内置 API2026-09-12
函数2026-09-12
流程控制、数组与集合2026-09-12
变量、数据类型与运算符2026-09-12
移动端与响应式2026-09-12
分类
  • Git1
  • Java73
    • Docker1
    • ES3
    • JavaSE17
    • LangChain4J5
    • Linux1
    • Mybatis3
标签
倒排索引 抽象工厂模式 缓存雪崩 梯度下降 BigKey 静态工具 BeanFactory ID3 极大似然估计 双亲委派模型 Spring Framework 序列化流 有监督学习 同步调用 DispatcherServlet 动静分离 强化学习 BIO 故障转移 tika master Direct 声明式事务 SpringAMQP 依赖注入 代理模式 ndarray KNN nginx ControllerAdvice 增量同步 异步调用 对象 Topic 反向代理 RDB 控制反转 文档 枚举处理 缓存穿透
归档
  • 九月 2026 7
  • 八月 2026 2
  • 六月 2026 1
  • 五月 2026 4
  • 四月 2026 9
  • 一月 2026 5
  • 十月 2025 2
  • 九月 2025 2
网站信息
文章数目 :
99
本站访客数 :
本站总浏览量 :
最后更新时间 :
© 2025 - 2026 By Yang框架 Hexo 7.3.0|主题 Butterfly 5.5.5-b1