
设计模式
文章平均质量分 85
代老师的编程课
去哪儿网资深架构师,前美团技术专家,16年Java开发经验,MiniTomcat实战课程作者。
展开
-
Java 设计模式——深入浅出组合模式:构建灵活的树形结构
组合模式,顾名思义,就是将对象组合成树形结构,以此来清晰地表示“部分 - 整体”的层次关系。这意味着,无论是单个的对象,还是由多个对象组合而成的复杂对象,在使用方式上对用户来说都是一致的,大大简化了代码的复杂性,提高了代码的可维护性和可扩展性。组合模式作为一种强大的设计模式,为处理树形结构数据提供了优雅而高效的解决方案。它通过统一整体和部分的操作方式,简化了复杂结构的处理,提高了代码的灵活性和可维护性。无论是在构建公司组织结构、文件系统,还是其他具有层次结构的场景中,组合模式都能发挥重要作用。原创 2024-12-12 18:28:39 · 1186 阅读 · 0 评论 -
Java 设计模式——从冰雪经济看设计模式的综合运用(工厂、单例、策略、观察者)
当冬季的寒风拂过大地,冰雪经济如同一颗璀璨的明珠,在寒冷中散发着炽热的魅力。滑雪场、冰雕展、冰雪主题酒店等各类冰雪产业蓬勃发展,其背后的运营逻辑和策略,与 Java 设计模式有着奇妙的相似之处,为我们深入理解和运用 Java 设计模式提供了独特的视角。原创 2024-12-12 13:36:03 · 783 阅读 · 0 评论 -
Java 设计模式——从日本军援四国事件策略与适配的巧妙运用
在国际局势波谲云诡之际,日本宣布军援菲律宾等四国这一事件,看似与编程世界风马牛不相及,实则蕴含着诸多可类比于Java设计模式的精妙逻辑。就如同各国在复杂地缘博弈中需灵活制定战略、适配不同国情与局势,Java开发者面对多变的业务需求,设计模式便是手中的王牌,助我们打造稳健、可扩展的代码架构。原创 2024-12-11 18:06:24 · 333 阅读 · 0 评论 -
Java 设计模式——策略模式:如何应对乌克兰“北约加入”决策的变化
策略模式是一种行为型设计模式将一系列的算法封装到独立的策略类中,使它们可以互换。让客户端可以根据需要选择不同的策略,而不需要关心策略的具体实现。通过策略模式的使用,我们能够灵活地处理系统中不同情境下的决策问题,就像乌克兰政府面临的外交战略选择一样。策略模式不仅能让代码保持清晰和可维护,而且能让系统具备更强的灵活性和可扩展性。无论是在国际政治还是软件设计中,灵活应对变化是成功的关键。通过策略模式,你的系统也能像泽连斯基那样,根据不同的局势做出快速而有效的决策。希望这篇文章能够帮助你理解如何将策略模式。原创 2024-12-02 08:45:53 · 1265 阅读 · 0 评论 -
Java设计模式——适配器模式的精妙应用:探秘 JDK 源码中的 Set 类
通过深入剖析 JDK 源码中 Set 类对适配器模式的应用,我们不仅揭开了 Set 类高效实现元素唯一性判断和操作的神秘面纱,更深刻体会到了设计模式在优化代码结构、提高代码复用性和灵活性方面的巨大威力。这就像在黑暗中点亮了一盏明灯,为我们今后的编程实践指明了方向。在日常编程中,我们不应仅仅满足于使用现成的类和接口,更应该像这样深入源码,学习大师们的设计思路和技巧。只有这样,我们才能不断提升自己的编程水平,打造出更加高效、健壮、优雅的软件系统。原创 2024-12-01 11:21:12 · 617 阅读 · 0 评论 -
Java 设计模式——观察者模式:从优衣库不使用新疆棉事件看系统的动态响应
观察者模式属于行为型设计模式当对象的状态发生改变时,所有依赖于它的对象都会收到通知并自动更新。这种模式非常适用于当系统中的某一部分状态变化需要同时通知到其他部分的场景。通过优衣库不使用新疆棉事件,我们可以清晰地看到观察者模式在应对复杂决策和动态反应中的优势。当品牌作出决策时,消费者和舆论等多个观察者会收到通知并做出反应,无缝的事件驱动机制让这种决策的传播变得高效且灵活。如果你的系统中涉及到多个模块需要对某一变化做出响应,观察者模式无疑是一个非常合适的解决方案。原创 2024-11-30 14:01:56 · 888 阅读 · 0 评论 -
Java设计模式——装饰模式与代理模式:深度剖析差异与应用
通过对装饰模式和代理模式的深入剖析,我们清晰地看到了它们在设计理念、实现方式和应用场景上的显著差异。理解这些差异,就如同掌握了一把开启高效编程之门的钥匙,能够帮助我们在面对不同的软件开发需求时,准确地选择合适的设计模式,打造出更加灵活、可靠、安全的软件系统。在未来的编程探索中,我们还会遇到更多精彩的设计模式,它们各自都有着独特的魅力和应用价值。让我们继续保持对技术的热情和好奇心,不断学习和实践,用设计模式的智慧点亮我们的编程之路,创造出更加优秀的软件作品!🚀。原创 2024-11-29 11:31:48 · 1038 阅读 · 0 评论 -
Java设计模式——职责链模式:解锁高效灵活的请求处理之道
职责链模式可是对象行为模式家族里的“明星成员”哦!想象一下,有一群对象像链条上的环一样紧密相连,每个对象都知道下一个对象是谁(持有下家的引用)。当一个请求像小包裹一样在这条链上传递时,它会逐个经过这些对象。而发出请求的客户端呢,就像把包裹送到快递公司后就安心等待结果一样,完全不用操心到底是哪个对象最终会处理这个请求。这种模式最大的魅力在于它赋予了系统超级强大的灵活性。比如说,我们可以随时调整这条链的结构,添加、删除或者重新排列处理者,而客户端那边却感觉不到任何变化,就像魔法一样!🧙♂️。原创 2024-11-28 18:39:27 · 608 阅读 · 0 评论 -
Java设计模式——策略模式 vs 工厂模式:解锁软件设计 “超能力”,码农必备!
嘿,各位奋战在代码“一线”的小伙伴们!今天咱要开启一场设计模式界的“巅峰对决”,主角就是策略模式与工厂模式这两大“王牌选手”。在软件开发这片“江湖”,选对设计模式,就如同大侠手握神兵,能让代码“如有神助”,轻松应对各种复杂“战局”。闲话不多说,现在就深挖它们的“绝技”,看谁才是你项目里的“最强辅助”!原创 2024-11-27 12:32:51 · 938 阅读 · 0 评论 -
Java-23种设计模式
设计模式总体分为三大类:创建型模式(5种)、结构型模式(7种)和行为模式(11种)。在深入了解各种设计模式之前,先明确一下设计所遵循的原则,主要包括单一职责、开放封闭原则 - OCP(功能开放,代码闭合)、里氏替换原则(子类型能够替换掉父类型,松耦合)以及接口隔离原则 - ISP(不能出现胖接口,应该打散dao,多定义子接口)。这些原则为设计模式的合理运用提供了指导方针,确保软件系统具备良好的可维护性、扩展性和灵活性。原创 2024-11-25 09:38:04 · 1105 阅读 · 0 评论 -
Java设计模式——享元模式
享元模式英文称为“Flyweight Pattern”。其定义为:采用共享来避免大量拥有相同内容对象的开销,这里最常见、直观的开销就是内存损耗。享元模式以共享的方式高效支持大量细粒度对象。在该模式中,核心概念是共享,为实现共享,区分了内蕴状态和外蕴状态。内蕴状态是共性,存储在享元内部,不会随环境改变而不同,可共享;外蕴状态是个性,随环境改变而改变,由客户端保持,在具体环境下,客户端将外蕴状态传递给享元以创建不同对象。根据《Java与模式》,享元模式分为单纯享元模式和复合享元模式。原创 2024-11-27 08:34:10 · 659 阅读 · 0 评论 -
Java IO 框架整理
昨天笔试时碰到了IO流的题目,很久没接触IO编程了,所以那道题目做的不行。搜了一下,这篇文章总结的很有条理,果断转载。转自:http://tanshenghui.javaeye.com/blog/618724===================================可从IO的类层次,IO框架的设计模式来论述。 总体来说,IO可以分为字节流和字符流转载 2014-03-15 17:20:52 · 661 阅读 · 0 评论 -
Tomcat 系统架构与设计模式,第 2 部分: 设计模式分析
这个分为两个部分的系列文章研究了 Apache Tomcat 服务器的系统架构以及其运用的很多经典设计模式。第 1 部分 分析了 Tomcat 的工作原理,第 2 部分将分析 Tomcat 中运用的许多经典设计模式,如模版模式、工厂模式和单例模式等。通过学习它们的实践运用能给我们以后的软件设计起到一定的借鉴作用。3 评论:许 令波, Java 开发工程师, 淘宝网转载 2014-03-17 22:44:38 · 552 阅读 · 0 评论 -
数据库 -- 由数据库连接池引出的三种设计模式
笔记摘要: 这里首先对数据库连接池的优化进行了说明,同时自己编写了一个数据库连接池,在实际开发中,为了获取标准的数据源,我们需要去实现javax.sal.DataSource接口, 在实现过程中对于链接对象的close方法进行了不同的实现,以便在关闭close的时候,将连接对象放回连接池,而不是关闭掉,针对这一问题,提供了3种不同的解决 方案,涉及了转载 2013-10-08 18:20:01 · 821 阅读 · 0 评论 -
Java单例对象同步问题探讨
在本文中,作者向大家讲述了Single Call 模式的原理,同时也介绍了Single Call 模式的实现问题。 评论:邓明 (dengming@cn.ibm.com), 高级信息系统工程师, IBM中国有限公司 商业咨询服务部2003 年 12 月 10 日内容单例对象(Singleto转载 2013-10-07 22:16:25 · 710 阅读 · 0 评论 -
双重检查锁定及单例模式(ibm社区)
本文来自ibm社区 单例创建模式是一个通用的编程习语。和多线程一起使用时,必需使用某种类型的同步。在努力创建更有效的代码时,Java 程序员们创建了双重检查锁定习语,将其和单例创建模式一起使用,从而限制同步代码量。然而,由于一些不太常见的 Java 内存模型细节的原因,并不能保证这个双重检查锁定习语有效。它偶尔会失败,而不是总失败。此外,它失败的原因并不明显,还包含 Java转载 2014-03-20 19:12:00 · 610 阅读 · 0 评论 -
工厂方法与抽象工厂的区别
工厂方法模式:一个抽象产品类,可以派生出多个具体产品类。 一个抽象工厂类,可以派生出多个具体工厂类。 每个具体工厂类只能创建一个具体产品类的实例。抽象工厂模式:多个抽象产品类,每个抽象产品类可以派生出多个具体产品类。 一个抽象工厂类,可以派生出多个具体工厂类。 每个具体工厂类可以创建多个具体产品类的实例。 区别:工厂方法模式只有一个抽象产品类,而抽原创 2012-02-11 15:45:46 · 457 阅读 · 0 评论 -
JDK中的动态代理
江苏 无锡 缪小东 写到代理模式这章,不得不提到JDK中的动态代理,它是java语言自身对动态代理的支持,类似于JDK中在java.util包中提供Observable类和Observer接口提供对观察者模式的语言级支持。关于动态代理的好处可以从网络上流行的中用动态代理类实现记忆功能>>、使用JAVA中的动态代理实现数据库连接池>>、通过JAVA的动态代理机制控制事务>> 、用转载 2013-07-12 08:44:18 · 758 阅读 · 0 评论 -
通过Java Swing看透MVC设计模式
一个好的用户界面(GUI)的设计通常可以在现实世界找到相应的表现。例如,如果在您的面前摆放着一个类似于电脑键盘按键的一个简单的按钮,然而就是这么简单的一个按钮,我们就可以看出一个GUI设计的规则,它由两个主要的部分构成,一部分使得它具有了按钮应该具有的动作特性,例如可以被按下。另外一部分则负责它的表现,例如这个按钮是代表了A还是B。 看清楚这两点你就发现了一个很强大的设计方法,这种方法转载 2012-03-31 23:15:23 · 756 阅读 · 0 评论 -
Java源码分析:深入探讨Iterator模式——迭代器模式
java.util包中包含了一系列重要的集合类。本文将从分析源码入手,深入研究一个集合类的内部结构,以及遍历集合的迭代模式的源码实现内幕。下面我们先简单讨论一个根接口Collection,然后分析一个抽象类AbstractList和它的对应Iterator接口,并仔细研究迭代子模式的实现原理。本文讨论的源代码版本是JDK 1.4.2,因为JDK 1.5在java.util中使用了很转载 2012-02-08 18:18:07 · 701 阅读 · 0 评论 -
JDK源码分析——动态代理源码(Proxy类)
读源码,怕过两天又忘记了,还是记录下吧..动态代理最重要的实现就是Proxy.newInstance ,那我们直接看这个方法public static Object newProxyInstance(ClassLoader loader, Class[] interfaces, InvocationHandler h)//这里有三个参数,第一个是传入classl转载 2012-02-12 10:44:23 · 1402 阅读 · 1 评论 -
《JAVA与模式》之解释器模式
在阎宏博士的《JAVA与模式》一书中开头是这样描述解释器(Interpreter)模式的: 解释器模式是类的行为模式。给定一个语言之后,解释器模式可以定义出其文法的一种表示,并同时提供一个解释器。客户端可以使用这个解释器来解释这个语言中的句子。解释器模式的结构 下面就以一个示意性的系统为例,讨论解释器模式的结构。系统的结构图如下所示: 模式所涉及的转载 2013-10-14 17:43:45 · 627 阅读 · 0 评论 -
RMI, Dynamic Proxies, and the Evolution of Deployment
ContentsStubs, Skeletons, the RMI Runtime,Serialization and Dynamic CodebasesNo More Skeletons: JDK 1.2Detouring Through Dynamic ProxiesClient-Side Fun and Games转载 2013-05-12 13:07:09 · 1321 阅读 · 0 评论 -
Dynamic Proxy 在 Java RMI 中的应用
2000年9月6日,Rickard Oberg (Jboss 的主要作者之一) 在RMI-USERS 邮件组贴了一个标题为 "HOWTO: Use Dynamic Proxies as RMI stubs + HOWTO: Export dynammic proxies as RMI objects" 的贴子, 展示了Dynamic Proxy 如何用在Java RMI 中。利用这项技术,程转载 2013-05-12 11:58:11 · 797 阅读 · 0 评论 -
单例模式中为什么用枚举更好
本文由 ImportNew - 刘志军 翻译自 Javarevisited。如需转载本文,请先参见文章末尾处的转载要求。枚举单例(Enum Singleton)是实现单例模式的一种新方式,尽管单例模式在java中已经存在很长时间了,但是枚举单例相对来说是一种比较新的概念,枚举这个特性是在Java5才出现的,这篇文章主要讲解关于为什么我们应该使用枚举来实现单例模式,它与传统方式实现的单例模式转载 2014-01-20 23:00:01 · 2038 阅读 · 0 评论