- 博客(59)
- 资源 (60)
- 收藏
- 关注
原创 设计模式:访问者模式
访问者模式(Visitor Pattern)是一种行为型设计模式,它允许你在不修改对象结构的情况下定义作用于这些对象的新操作。访问者模式通过将操作封装到访问者对象中,使得可以在不改变元素类的前提下,增加新的操作。该模式适用于数据结构相对稳定,而操作易于变化的系统。
2024-05-31 23:11:38
354
原创 设计模式:模板方法模式
模板方法模式(Template Method Pattern)是一种行为型设计模式,它定义了一个操作中的算法骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下重新定义算法中的某些步骤。模板方法模式通过将不变的行为搬移到超类,去除了子类中的重复代码。
2024-05-31 23:05:49
327
原创 设计模式:策略模式
策略模式(Strategy Pattern)是一种行为型设计模式,它定义了一系列算法,并将每一个算法封装起来,使得它们可以互相替换。策略模式使得算法可以独立于使用它的客户而变化。策略模式通过定义一组可互换的算法,让客户端可以在运行时选择不同的算法。
2024-05-31 23:00:24
194
原创 设计模式:状态模式
状态模式(State Pattern)是一种行为型设计模式,它允许一个对象在其内部状态改变时改变其行为,使对象看起来好像修改了其类。状态模式通过将状态相关的行为抽取到独立的状态类中,使得增加新状态变得容易,且不会影响到其他状态的行为。
2024-05-31 22:55:32
180
原创 设计模式:观察者模式
观察者模式(Observer Pattern)是一种行为型设计模式,它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。当主题对象的状态发生变化时,它会通知所有观察者对象,使它们能够自动更新。观察者模式是事件驱动编程的一种实现方式,广泛应用于GUI框架、事件处理系统等。
2024-05-31 22:51:11
322
原创 设计模式:备忘录模式
备忘录模式(Memento Pattern)是一种行为型设计模式,它允许在不破坏封装性的前提下捕获和恢复对象的内部状态,从而可以在需要时将对象恢复到之前的状态。备忘录模式通过保存对象的状态来支持撤销操作。
2024-05-31 21:26:06
309
原创 设计模式:中介者模式
中介者模式(Mediator Pattern)是一种行为型设计模式,它定义了一个中介对象来封装一组对象之间的交互。中介者模式通过使对象不再显式地相互引用,从而使对象之间的耦合松散,且可以独立地改变它们之间的交互。
2024-05-31 21:18:01
208
原创 设计模式:迭代器模式
迭代器模式(Iterator Pattern)是一种行为型设计模式,它提供了一种方法顺序访问一个聚合对象中的各个元素,而又不需要暴露该对象的内部表示。迭代器模式将遍历聚合对象的任务交给迭代器对象,从而简化了聚合对象的接口和实现。
2024-05-31 21:13:08
378
原创 设计模式:解释器模式
解释器模式(Interpreter Pattern)是一种行为型设计模式,它定义了一种语言的文法表示,并定义一个解释器来解释这种语言中的句子。解释器模式用于解析和执行特定语法或表达式的系统。
2024-05-31 18:26:20
431
原创 设计模式:命令模式
命令模式(Command Pattern)是一种行为型设计模式,它将一个请求封装为一个对象,从而使你可以用不同的请求对客户端进行参数化、对请求排队或记录请求日志,以及支持可撤销的操作。命令模式通过将请求的发送者和接收者解耦,使得可以灵活地设计请求的处理和管理。
2024-05-31 18:17:50
247
原创 设计模式:责任链模式
责任链模式(Chain of Responsibility Pattern)是一种行为型设计模式,它允许多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合。将这些对象连接成一条链,并沿着这条链传递请求,直到有一个对象处理它为止。
2024-05-31 18:09:35
275
原创 设计模式:代理模式
代理模式(Proxy Pattern)是一种结构型设计模式,它允许通过代理对象来控制对其他对象的访问。代理对象通常会在实际对象的方法调用前后进行一些额外的操作,比如延迟实例化、安全检查、日志记录等。
2024-05-31 17:58:04
432
原创 设计模式:享元模式
享元模式(Flyweight Pattern)是一种结构型设计模式,它通过共享细粒度对象来支持大量细粒度对象的高效共享,避免对象的多次创建,从而减少内存使用。享元模式非常适合用于实现那些包含大量相似对象的系统。
2024-05-31 14:06:36
378
原创 设计模式:外观模式
外观模式(Facade Pattern)是一种结构型设计模式,它为子系统中的一组接口提供一个统一的高层接口。这个高层接口使得子系统更加易于使用。
2024-05-31 10:05:46
361
原创 设计模式:装饰模式
装饰模式(Decorator Pattern)是一种结构型设计模式,它允许在不改变对象接口的前提下向对象添加新的行为。通过使用装饰模式,我们可以动态地将责任附加到对象上,而无需修改代码中的其他类。
2024-05-31 10:00:18
460
原创 设计模式:组合模式
通过组合模式,我们可以构建一个包含单个对象和组合对象的树形结构。这个模式使得客户端可以一致地处理单个对象和组合对象,从而简化了代码的操作。
2024-05-30 23:56:57
204
原创 设计模式:桥接模式
Override@Override通过桥接模式,我们将形状和颜色解耦,使得它们可以独立变化。我们可以在不改变颜色类的情况下增加新的形状,也可以在不改变形状类的情况下增加新的颜色。这种设计方式使得系统更加灵活和易于扩展。
2024-05-30 23:52:42
339
原创 设计模式:适配器模式
是一种结构型设计模式,它使得接口不兼容的类可以一起工作。它通过将一个类的接口转换成客户端期望的另一个接口,使得原本因接口不兼容而不能一起工作的类可以在一起工作。
2024-05-30 23:15:57
237
原创 设计模式:原型模式
是一种创建型设计模式,它允许一个对象通过复制现有的对象来创建新的实例。原型模式的主要目的是通过克隆来创建对象,而不是通过构造函数。这对于创建代价较高或复杂的对象时特别有用。
2024-05-30 22:58:18
317
原创 设计模式:建造者模式
是一种创建型设计模式,它允许使用多个简单的对象一步一步构建一个复杂的对象。建造者模式的主要目的是将对象的构造与它的表示分离,使得相同的构建过程可以创建不同的表示。
2024-05-30 22:50:48
321
原创 设计模式:抽象工厂模式
抽象工厂模式是一个创建型设计模式,主要用于创建一系列相关或相互依赖的对象,而无需指定它们具体的类。它提供一个接口,用于创建相关或依赖对象的家族,而无需明确指定具体类。
2024-05-30 22:32:32
180
原创 设计模式:工厂方法模式
(Factory Method Pattern)是一种创建型设计模式,它定义一个创建对象的接口,但由子类决定实例化哪一个类。工厂方法使得一个类的实例化延迟到其子类。
2024-05-30 22:17:34
891
原创 设计模式:简单工厂模式
Shape.java:图形接口:具体的圆形类@Override:具体的矩形类@Override:工厂类public class ShapeFactory {// 静态方法,根据输入参数创建具体图形对象。
2024-05-30 21:00:45
519
原创 设计模式:单例模式
有多种方式来实现单例模式,例如懒汉式、饿汉式、双重检查锁等。我们将通过以下几种方式实现单例模式。:确保一个类只有一个实例,并提供一个全局访问点。饿汉式在类加载时就实例化单例对象,线程安全。利用类加载机制确保线程安全,推荐使用。关键字保证线程安全,但性能较低。时才创建实例,但线程不安全。
2024-05-30 20:49:56
289
原创 代码坏味道:夸夸其谈通用性
夸夸其谈通用性指的是为了未来可能的扩展或复用,过度设计和实现了许多当前并不需要的功能或抽象。这种做法会导致代码复杂度增加,难以维护和理解,而这些所谓的“通用性”在未来很可能并不会被用到。
2024-05-27 23:04:50
338
原创 java单元测试:spring测试模块
Spring 测试模块为开发者提供了一套强大的工具,用于在 Spring 应用中进行单元测试、集成测试和端到端测试。
2024-05-27 23:03:55
1413
原创 java单元测试:springmvc接口测试之传递不同类型的请求参数
在使用MockMvc进行测试时,传递参数的方法多种多样。参数可以通过 URL 路径、查询参数、请求体等形式传递。
2024-05-27 23:00:53
354
原创 java单元测试:springmvc接口测试之RequestBuilder
构建 GET 请求。: 构建 POST 请求。: 构建 PUT 请求。: 构建 DELETE 请求。: 构建 PATCH 请求。: 构建 HEAD 请求。: 构建 OPTIONS 请求。: 构建自定义 HTTP 请求。: 添加查询参数。: 添加请求头。: 设置请求体内容。: 设置请求的内容类型。: 设置客户端接受的响应类型。
2024-05-27 22:56:50
400
原创 java单元测试:springmvc接口测试之ResultMatcher
如果内置的不满足你的需求,你可以创建自定义的。if(!} } } // 使用自定义的 ResultMatcher mockMvc . perform(get("/api/users/hello")) . andExpect(new CustomHeaderMatcher("Content-Type" , "application/json"));if(!
2024-05-27 22:53:30
508
原创 java单元测试:springmvc接口测试之ResultHandler
你可以根据测试需求创建自定义的实现。例如,可以创建一个用于计算响应时间或处理特定的响应格式。综合上述内容,以下是一个完整的示例,展示如何使用常见的"));} }"));} }"));} }"));} }Test;} }"));} }"));} }"));
2024-05-27 22:51:26
1088
原创 java单元测试:springmvc接口测试MockMvc
MockMvc 是 Spring 测试框架中的一个重要工具,用于在不启动真实服务器的情况下测试 Spring MVC 控制器。它提供了一种方式来模拟 HTTP 请求,并验证控制器的行为和响应。
2024-05-27 21:15:21
725
原创 代码坏味道:循环语句
循环语句(如forwhile等)虽然是编程中常用的控制结构,但在某些情况下,循环语句可能会导致代码难以理解和维护。这种坏味道指的是循环语句包含复杂的逻辑、多个嵌套层次,或者可以用更高层次的操作(如集合操作、流操作等)来替代,以提高代码的可读性和可维护性。
2024-05-26 12:36:18
330
原创 代码坏味道:重复的switch
重复的switch指的是在代码的多个地方使用相同的switch (或if-else) 语句来做不同的操作。这种坏味道会导致代码的重复和难以维护。如果需要修改某个条件或添加新条件,就需要在每个switch语句处进行修改,容易引入错误和不一致。
2024-05-26 12:34:42
376
原创 重构技巧1
函数组合成类是一种有效的重构手法,通过将相关函数和数据封装在一个类中,可以显著提高代码的内聚性、可读性和可维护性。函数组合成变换是一个强大的重构手法,通过将多个相关的函数合并为一个转换过程,可以显著提高代码的可读性和可维护性。拆分阶段是一种有效的重构手法,通过将复杂的处理流程拆分为多个独立的步骤,可以显著提高代码的可读性和可维护性。封装变量是提升代码封装性和灵活性的重要手法,通过封装变量,可以更好地控制数据的访问和修改,提高代码的安全性和可维护性。提炼函数是指从一个较大的函数中提取出一个或多个较小的函数。
2024-05-26 12:25:40
966
原创 代码坏味道:基本类型偏执
等)来表示复杂的数据,而不使用自定义的类型。这样会导致代码缺乏清晰的语义,难以维护和扩展。当基本类型的使用方式开始变得复杂或频繁时,通常意味着需要引入新的类型来封装这些基本数据。通过引入值对象和自定义类型,可以消除基本类型偏执的坏味道,增强代码的表达能力和可维护性。基本类型偏执指的是过度使用基本类型(如。
2024-05-26 10:06:16
547
原创 代码坏味道:数据泥团
数据泥团指的是多个数据项经常一起出现,并且在多个地方一起传递或处理。这种情况通常表明这些数据具有某种内在的关联,应该被封装成一个对象。数据泥团会导致代码的冗余和难以维护,因为每次修改都需要在多个地方进行相同的调整。通过引入对象将数据泥团封装起来,可以减少代码的冗余,提高代码的内聚性和可维护性。
2024-05-26 10:01:53
710
原创 代码坏味道:依恋情节
依恋情节指的是一个类频繁地访问另一个类的数据或方法,而不是使用自身的数据和方法。这通常表明功能实现可能放在了错误的类中。依恋情节会导致类之间的高度耦合,降低代码的可维护性和可读性。通过将方法移动到更合适的类中,可以减少依恋情节的坏味道,提高代码的内聚性和可维护性。
2024-05-26 09:59:48
474
原创 代码坏味道:散弹式修改
散弹式修改指的是对某一个功能的修改需要在多个不同的类或模块中进行小幅度的修改。这样的代码结构增加了维护的复杂性,因为一次简单的功能修改可能会涉及到多个类或模块的调整,容易出错并且难以追踪和测试。通常这也是违反单一职责原则(Single Responsibility Principle, SRP)的表现。通过将相关的功能聚合到一个类或模块中,可以有效减少散弹式修改的坏味道,提高代码的可维护性和可读性。
2024-05-26 09:53:29
369
原创 代码坏味道:发散式变化
发散式变化指的是一个模块需要因为多种不同的原因而发生变化。这通常意味着这个模块承担了过多的职责,违反了单一职责原则(Single Responsibility Principle, SRP)。当一个模块需要频繁地因为不同的原因进行修改时,维护起来会变得非常困难,增加了出错的可能性。通过遵循单一职责原则和模块化设计,可以有效减少发散式变化的坏味道,提高代码的可维护性和可读性。
2024-05-26 09:34:27
729
Hibernate的一个简单例子
2014-05-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人