随笔分类 -  设计模式

Java相关的设计模式
摘要:前言 领域驱动设计(DDD,Domain-Driven Design)是一套以业务领域知识为中心、以统一语言和模型为驱动的复杂软件系统设计方法学。 它的核心思想是:把技术实现与业务知识深度融合,让代码成为业务概念的忠实映射,从而持续交付真正解决业务问题的软件。 领域驱动设计相关概念 领域模型 领域模 阅读全文
posted @ 2025-08-22 16:57 纪莫 阅读(1198) 评论(0) 推荐(3)
摘要:前言 模板方法模式,定义一个操作中算法的骨架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定步骤。 模板方法模式 概念介绍 模板方法模式,其实是很好理解的,具体理解为,定义一个操作中算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法结构即 阅读全文
posted @ 2018-10-21 20:52 纪莫 阅读(717) 评论(0) 推荐(1)
摘要:前言 状态模式是一种行为模式,用于解决系统中复杂的对象状态转换以及各个状态下的封装等问题。状态模式是将一个对象的状态从该对象中分离出来,封装到专门的状态类中,使得对象的状态可以灵活多变。这样在客户端使用时无需关心对象的状态,可以实现自身的一致性处理。最近工作有些忙,更新博客慢了。还是要严格要求自己的 阅读全文
posted @ 2018-09-29 00:31 纪莫 阅读(2072) 评论(0) 推荐(0)
摘要:前言 观察者模式也是对象行为模式的一种,又叫做发表-订阅(Publish/Subscribe)模式、模型-视图(Model/View)模式、 咱们目前用的最多的就是各种MQ(Message Queue)都是基于这个模式的思想来实现的,生产者产生数据放到一个队列中,消费者观察生产者的消息队列的变化,从 阅读全文
posted @ 2018-09-15 22:52 纪莫 阅读(1146) 评论(0) 推荐(1)
摘要:前言 这次要介绍的是备忘录模式,也是行为模式的一种 。现在人们的智能手机上都会有备忘录这样一个功能,大家也都会用,就是为了记住某件事情,防止以后自己忘记了。那么备忘录模式又是什么样子的呢?是不是和手机上的备忘录一样呢?下面来介绍一下。 备忘录模式 概念介绍 备忘录模式是指在不破坏封装性的前提下,捕获 阅读全文
posted @ 2018-09-09 16:18 纪莫 阅读(2950) 评论(0) 推荐(2)
摘要:前言 中介者模式听名字就能想到也是一种为了解决耦合度的设计模式,其实中介者模式在结构上与观察者、命令模式十分相像;而应用目的又与结构模式“门面模式”有些相似。但区别于命令模式的是大多数中介者角色对于客户程序是透明的。当然造成这种区别的原因是由于他们要达到的目的不同。 中介者模式 概念介绍 中介者模式 阅读全文
posted @ 2018-08-26 17:37 纪莫 阅读(1533) 评论(2) 推荐(1)
摘要:前言 这次要介绍的是迭代器模式,也是一种行为模式。我现在觉得写博客有点应付了,前阵子一天一篇,感觉这样其实有点没理解透彻就写下来了,而且写完后自己也没有多看几遍,上次在面试的时候被问到java中的I/O的各种实现用到了什么设计模式,我愣是想半天没想出来了,人家还给提示了我也没想出来,最后还是面试官给 阅读全文
posted @ 2018-08-25 23:19 纪莫 阅读(970) 评论(0) 推荐(0)
摘要:前言 这次介绍另一个行为模式,解释器模式,都说解释器模式用的少,其实只是我们在日常的开发中用的少,但是一些开源框架中还是能见到它的影子,例如:spring的spEL表达式在解析时就用到了解释器模式,以及mybatis在将SQL语句映射成对象时关系时、还有一些解析正则表达式和解析json等开源工具。 阅读全文
posted @ 2018-08-18 11:57 纪莫 阅读(1741) 评论(0) 推荐(0)
摘要:前言 这次要介绍的是命令模式,这也是一种行为型模式。最近反正没有面试机会我就写博客呗,该投的简历都投了。然后就继续看书,其实看书也会给自己带来成就感,原来以前不明白的东西,书上已经给彻底的介绍清楚了,然后读到完了就有一种恍然大悟的感觉,怕自己理解的有问题,还要去网上搜各种答案来确保自己的理解确实没问 阅读全文
posted @ 2018-08-17 11:25 纪莫 阅读(528) 评论(0) 推荐(0)
摘要:前言 已经把五个创建型设计模式和七个结构型设计模式介绍完了,从这篇开始要介绍行为型设计模式了,第一个要介绍的行为型设计模式就是责任链模式(又称职责链模式)。 责任链模式 概念介绍 责任链模式是为了避免请求的发送者和接收者之间的耦合关系,使多个接收对象都有机会处理请求。将这些对象练成一条链,并沿着这条 阅读全文
posted @ 2018-08-16 10:10 纪莫 阅读(1211) 评论(0) 推荐(1)
摘要:前言 享元模式也是一种结构型模式,这篇是介绍结构型模式的最后一篇了(因为代理模式很早之前就已经写过了)。享元模式采用一个共享来避免大量拥有相同内容对象的开销。这种开销最常见、最直观的就是内存损耗。 享元模式 定义 享元模式是指运用共享技术有效的支持大量细粒度对象的复用。系统只使用少量的对象,而这些对 阅读全文
posted @ 2018-08-15 11:22 纪莫 阅读(1011) 评论(4) 推荐(3)
摘要:前言 这次要介绍的是外观模式(也称为门面模式),外观模式也属于结构型模式,其实外观模式还是非常好理解的,简单的来讲就是将多个复杂的业务封装成一个方法,在调用此方法时可以不必关系具体执行了哪些业务,而只关心结果即可。这个场景其实在日常开发中使用的频率还是非常高的,下面来简单了解一下吧。 外观模式 概念 阅读全文
posted @ 2018-08-13 16:00 纪莫 阅读(2352) 评论(1) 推荐(0)
摘要:前言 装饰模式也是一种结构型模式,主要是目的是相对于类与类之间的继承关系来说,使用装饰模式可以降低耦合度。JDK中有不少地方都使用到了装饰模式,例如Java的各种I/O流,javax.swing包中一些图形界面构件功能的增强等地方都运用了装饰模式。 装饰模式 定义 装饰模式的定义是:在不改变原类文件 阅读全文
posted @ 2018-08-12 17:31 纪莫 阅读(819) 评论(0) 推荐(0)
摘要:前言 今天要介绍的设计模式是组合模式,组合模式也是结构型设计模式的一种,它主要体现了整体与部分的关系,其典型的应用就是树形结构。组合是一组对象,其中的对象可能包含一个其他对象,也可能包含一组其他对象。 组合模式 组合模式定义为:将对象组合成树形结构以表示“整体-部分”的层次结构。组合模式是单个对象和 阅读全文
posted @ 2018-07-27 14:32 纪莫 阅读(732) 评论(0) 推荐(0)
摘要:前言 这次介绍结构型设计模式中的第二种模式,桥接模式。 使用桥接模式的目的就是为了解耦,松散的耦合更利于扩展,但是会增加相应的代码量和设计难度。 桥接模式 桥接模式是为了将抽象化与实现化解耦,让二者可以独立地变化。方便对每一部分的扩展,以及单独的维护。抽象化的一方与实现化的一方之间建立一个桥梁,这样 阅读全文
posted @ 2018-07-15 19:12 纪莫 阅读(878) 评论(0) 推荐(0)
摘要:前言 之前已经将五个创建型设计模式介绍完了,从这一篇开始介绍结构型设计模式,适配器模式就是结构型模式的一种,适配器要实现的效果是把“源”过渡到“目标”。 适配器模式 在开发过程中,使用一个已经存在的类,而他的接口不符合我们的需求。这个时候我们本着开闭原则,要创建一个既符合我们需求又实现了已存在的接口 阅读全文
posted @ 2018-07-09 17:29 纪莫 阅读(1608) 评论(0) 推荐(1)
摘要:前言 今天周末,有小雨,正好也不用出门了,那就在家学习吧,经过了两周的面试,拿到了几个offer,但是都不是自己很想去的那种,要么就是几个人的初创小公司,要么就是开发企业内部系统的这种传统开发,感觉这种传统开发已经不能给自己带来多大的提升了,因为工作了这几年这种系统经历了不少了,整天的就是增删改查。 阅读全文
posted @ 2018-07-07 19:03 纪莫 阅读(4162) 评论(2) 推荐(2)
摘要:前言 最近一直在面试,也没时间写博客了,感觉已经积攒了好多知识想要记录下来了,因为在面试中遇到的没答出来的问题,这就是自己不足的地方,然后就要去学习这部分内容,虽然说自己不足的地方学习了,但是没有应用到具体实际的地方,过段时间也还是会忘,所以我的办法是用博客记录下来。 俗话说“好记性不如烂笔头”,在 阅读全文
posted @ 2018-07-04 14:24 纪莫 阅读(785) 评论(2) 推荐(0)
摘要:前言 已经介绍和学习了两个创建型模式了,今天来学习一下另一个非常常见的创建型模式,单例模式。 单例模式也被称为单件模式(或单体模式),主要作用是控制某个类型的实例数量是一个,而且只有一个。 单例模式 单例模式的实现方式 实现单例模式的方式有很多种,大体上可以划分为如下两种。 外部方式 在使用某些全局 阅读全文
posted @ 2018-06-24 23:37 纪莫 阅读(580) 评论(0) 推荐(0)
摘要:前言 上篇博客介绍了简单工厂模式和工厂方法模式,这次介绍抽象工厂模式,抽象工厂模式和工厂方法模式的区别在于需要创建对象的复杂程度上。 抽象工厂模式 抽象工厂模式是围绕着一个超级工厂创建其他工厂。这个超级工厂被称为其他工厂的工厂,主要是为了解决接口选择问题。 举例说明: 还是继续上篇用户使用手的例子, 阅读全文
posted @ 2018-06-23 21:54 纪莫 阅读(553) 评论(4) 推荐(0)