![](https://img-blog.csdnimg.cn/f6d7ea8ece724f45830b160aea4b5b53.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
你应该学会的设计模式
通过小说场景的方式,解释我们IT中的设计模式,让大家对设计模式的特点和场景有更深入的了解,帮助大家未来在设计过程中思考如何运用设计模式。
ImNIk
IT 老兵
展开
-
命令模式 | 神奇的魔法卷轴:无尽的潜能
其中,一本厚重的魔法书吸引了他们的目光,书的封面刻有"命令之书"四个大字。这样,当用户发出创建、修改或取消订单的指令时,这些指令就会被添加到命令队列中,并在合适的时间被执行。此外,命令模式的设计还为我们提供了一种轻松添加更多操作或者撤销操作的方式,增强了系统的可扩展性。艾瑞克感慨地说:“这正是命令模式的体现,每一张卷轴都是一个具体的命令,而魔法师则充当了命令的接收者和执行者。艾瑞克看着这些代码说:“看,命令模式不仅仅是理论,它在实际业务中也有广泛的应用,如这个订单系统就是一个生动的例子。原创 2023-10-11 12:13:54 · 111 阅读 · 0 评论 -
责任链模式 | 神秘山谷的挑战:连环魔导师
当用户申请退款时,系统首先会根据退款金额大小,决定由哪个级别的管理者来审批。在遥远的霞光山谷,存在一座宏伟的石碑,刻有诸多远古的传说。但进入这座石碑的入口,却被一系列的魔导师所守护,每位魔导师都拥有一个特定的挑战,只有连续通过他们的考验,才能一窥石碑之秘。当冒险者接受连环魔导师的挑战时,他们必须展示自己的技能,以匹配对应魔导师的魔法类型。每一层审批者都有自己的权限范围,如果超出了他们的权限,审批请求就会传递给下一个审批者。希望你能从这个故事中获得启发,更加灵活地应用责任链模式,解决复杂的业务问题。原创 2023-10-10 12:52:35 · 109 阅读 · 0 评论 -
代理模式 | 密室之门:神秘的守护者
这样,除了直接操作,还可以添加额外的逻辑,如权限检查、懒加载、或日志记录。代理模式可以允许我们先加载预览或小的占位符,然后在需要时再加载完整的视频。在魔法城堡的深处,丽莎和艾瑞克发现了一个巨大的密室之门。那扇门上镌刻着古老的符文,看起来有着数千年的历史。而站在那扇门前的,是一名身着盔甲的守卫者。艾瑞克对丽莎解释:“这名守卫者是这扇密室门的代理,他控制着对这扇门的访问。“你不能直接进入,”守卫者向丽莎说,“我是这扇门的代理者。丽莎反思道:“这样,我们就可以节省大量的资源,只在必要时进行真正的操作。原创 2023-10-09 09:14:59 · 101 阅读 · 0 评论 -
享元模式 | 魔法图书馆:无尽的知识之书
这个“知识之书”会将通用的图案和符号存储起来,并根据需要组装出特定的知识。这本书被称为“知识之书”。在他们探索图书馆的过程中,丽莎更加深入地理解了享元模式的意义,她说:“所以,这本知识之书通过共享和组合,为我们提供了无尽的知识,而不是存储每一页的完整内容。他继续解释:“这其实就是享元模式的应用。它通过共享和重用已存在的对象来最大化内存的使用,而不是为每个需要的内容都创建新的对象。艾瑞克打开书,向丽莎展示:“看,这本书只有一些基本的图案和符号,但当你需要某种知识时,它就会为你组装出完整的内容。原创 2023-10-08 00:15:00 · 98 阅读 · 0 评论 -
外观模式 | 魔法大门:隐藏的复杂机关
这座城堡的大门紧闭,前面有一个巨大的魔法板,上面刻有各种神秘的符文和古老的机关。在城堡的大门系统中,有一个古老的门,一个神秘的符文机制和一个强大的魔法屏障。虽然每个部分都有其特定的操作,但外观模式提供了一个简化的接口,用户只需进行一个简单的操作,就可以触发所有相关的操作。丽莎领会到了外观模式的精髓,她说:“所以,无论是解开魔法密码还是访问复杂的数据,外观模式都为我们提供了一个简单直接的方式。”艾瑞克点了点头:“没错,这就是它的魔力所在。它为复杂的系统提供了一个简单的接口,隐藏了所有的复杂性。原创 2023-10-07 00:15:00 · 47 阅读 · 0 评论 -
装饰器模式 | 午夜的珠宝店神秘订单
例如,Java中的IO流就大量使用了装饰器模式,允许我们创建各种组合的输入/输出流。另外,在web开发中,可以使用装饰器模式来添加中间件或者动态增加功能,如安全检查、日志记录等。月黑风高的午夜,一个神秘的顾客走进了"Midnight Gems",一个知名的珠宝店。店主,一个老练的珠宝工匠,拿出了一串普通的珠宝项链。使用装饰器模式,你可以动态地为请求添加这些功能,而不是改变原始的请求处理类。店主微笑着答道:“这就是装饰器模式的魅力,它让我们可以在不改变对象的前提下,为其添加新的行为。原创 2023-10-06 09:07:41 · 97 阅读 · 0 评论 -
组合模式 | 森林之歌:和谐的旋律
每个项目都有许多子任务,而每个子任务又可能有它的子任务。丽莎点击了项目的完成按钮,看到了所有子任务的进度逐一更新,她对艾瑞克说:“这真是一个神奇的森林,每一棵树都有它的故事。在辽阔的梦之森中,丽莎和艾瑞克走进了一个奇异的地方。一些树只能够发出单一的音符,而有些树则可以发出和谐的旋律,仿佛它们是由许多音乐树组合而成的。在现实的业务场景中,例如一个项目管理软件,项目可以包含子任务,子任务又可以继续细分。使用组合模式,我们可以轻松地添加、移除或修改任何任务,无论它是单独的任务还是一个包含多个子任务的项目。原创 2023-10-05 00:15:00 · 84 阅读 · 0 评论 -
适配器模式 | 失落的遗迹与魔法适配
这座城堡藏有一个失落的遗迹,据说里面有一个古老的魔法设备,只是,与现代的魔法设备不太兼容。将一个接口转换成客户期望的另一个接口,使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。穿过城堡的长廊,她发现了那个遗迹——一个古老的魔法充能器。它的端口与现代的接口不同,无法与她的魔法杖连接。丽莎点点头:“没错,适配器模式允许将现存的类的接口转换为另一个接口以满足客户的要求。月色洒落在古老的城堡上,月光下的工坊已经沉睡,但对于丽莎,今晚还有很多工作要做。丽莎制造了一个适配器,连接了古老的充能器和她的魔法杖。原创 2023-10-03 00:15:00 · 81 阅读 · 0 评论 -
桥接模式 | 桥梁之下的魔法链接
城堡里的夜空璀璨如斯,丽莎和艾瑞克站在城堡的最高塔上,远方有一座神秘的星桥横跨在两座山之间,仿佛连接了两个世界。这是一个传说中的魔法桥,可以将任何物质或魔法从一端传输到另一端,但核心的魔法结构和表面的物质形态是分离的。然而,她希望物品的内部魔法和其外观能够独立变化,而不相互影响。它可以将抽象部分与它的实现部分分离,使它们都可以独立地变化。艾瑞克点点头:“这样,无论你如何改变魔法物品的外观或功能,其内部魔法都不会受到影响。两人望向星桥,它在夜空中闪烁,仿佛邀请他们去探索更多的魔法奥秘。原创 2023-10-04 00:15:00 · 107 阅读 · 0 评论 -
月光下的工坊:编码大陆的创意魔法
众所周知,正是在这片森林的最深处,坐落着一座被称作“创意工房”的古老工坊。这里并不总是平静的,风中带着轻微的电子声,夜晚,工坊的窗户透出淡淡的光。为了确保机器人的心脏独一无二,她决定采用单例模式,这样,机器人的每一次心跳都是独特的。Elena点点头,说:“你说得对,让我们为这些部分开设一个工厂,利用抽象工厂模式。那一刻,Elena知道五种创建型模式的完美结合赋予了机器人神奇的魔法,而这就是编码的魅力。制造完心脏后,Rico提议说:“我们应该考虑制造机器人的其他部分,比如手、脚和头部。原创 2023-10-02 00:15:00 · 80 阅读 · 0 评论 -
建造者模式|石匠与天空之城的传说
在编码之都的东部,高高耸立的天空之城成为了每个人瞩目的焦点。那种技术,后来在编程世界中,被称为“建造者模式”。当她来到城市的大门,被她前面的壮观所震撼,她遇到了Leon。Elena露出了理解的微笑:“这样,无论我们要建造什么样的城堡,都可以使用相同的方法,并确保每次都得到一个完整、稳固的结构。“通过使用建造者模式,”Leon解释说,“我们可以分步骤、按顺序构造复杂的对象,确保每个部分都被正确构建。Leon说:“我会为每个部分设计一个构造过程,然后按照顺序逐步完成,这就是我称之为‘建造者模式’的方法。原创 2023-10-01 02:00:00 · 121 阅读 · 0 评论 -
原型模式|编码之都的克隆机器之谜
长者说:“这里,我们有一个具体的原型`ConcretePrototype`,它实现了`clone`方法,该方法返回一个新的`ConcretePrototype`对象,其中包含与当前对象相同的数据。在编码之都的西区,传说有一个古老的克隆机器。Elena,一位充满好奇心的新手开发者,决定探索这台神秘的机器并揭开其背后的秘密。夜渐深,长者告诉Elena,编码的真谛不仅仅在于模式,更在于解决问题的智慧。在编程中,当创建给定类的对象过于复杂或代价过高时,原型模式允许你复制已有的对象,而不是从头开始创建。原创 2023-09-30 21:35:58 · 31 阅读 · 0 评论 -
抽象工厂模式|编码之都的魔法工厂
编码之都的东部,隐藏着一个被称为“编码工厂”的神秘地方。巨大的空间中,她看到了不同的生产线,但她注意到有一些特殊的生产线并不只生产一个产品,它们能够生产出一个产品族。“欢迎来到编码工厂,” 一个名为Master Silas的中年人向她走来,对她说。Nina认真地看着代码,然后说:“这意味着当我需要为不同的操作系统创建GUI组件时,我只需选择相应的工厂,而不必为每个组件单独创建。随着太阳的落山,Nina带着新获得的知识离开了编码工厂,她决定在她的下一个项目中使用抽象工厂模式,将其魔法引入到她的代码中。原创 2023-09-30 13:26:36 · 76 阅读 · 0 评论 -
观察者模式|编码之都的消息塔
某天,她在街头偶然接收到了塔发出的一条重要消息,她决定亲自去看看这座塔是如何工作的。“是的,但也有一些缺点。当夜幕降临,编码之都的灯火通明,消息塔依然屹立在那里,守护着这个都市的信息和事件,与无数的程序员共同创造着新的传说。Ella仔细地看了代码,并尝试理解其中的逻辑,“那么,在实际的应用中,这种模式有什么好处呢?原创 2023-09-29 09:04:41 · 95 阅读 · 0 评论 -
单例模式 |软件之城的能源源泉
Martin走了进来,对她说:“对,这就是我们城市的能源核心。这样可以避免不必要的对象创建,节省资源,保证数据的一致性。空气中弥漫着一种特有的静电气息,机器的轻微运转声如同远方的歌声。这里的高楼大厦如同晶莹的电路板,灯光如同流动的电流,而城市的中心则是一座宏伟的塔,被称为“电力之心”。Lena沉思了一会:“这样说,单例模式在业务场景中,比如数据库连接、日志记录或任何需要全局状态的地方,都可以提供一致的访问点,对吗?她穿梭在街道之间,欣赏着这座城市的繁华,但她的目光总是不自觉地落在那座中心塔上。原创 2023-09-28 21:15:28 · 30 阅读 · 0 评论