【白话设计模式】23种设计模式一句话通俗讲解,华为java校招面试题

  1. 类模式:用于处理类与子类之间的关系,这些关系通过继承来建立,是静态的,在编译时刻便确定下来。

  2. 对象模式:用于处理对象之间的关系,这些关系可以通过组合或聚合来实现,在运行时刻是可以变化的,更具动态性。

一张表搞定

| 范围/目的 | 创建型模式 | 结构型模式 | 行为型模式 |

| — | — | — | — |

| 类模式 | 工厂方法 | (类)适配器 | 模板方法、解释器 |

| 对象模式 | 单例 原型 抽象工厂 建造者 | 代理 (对象)适配器 桥接 装饰 外观 享元 组合 | 策略 命令 责任链 状态 观察者 中介者 迭代器 访问者 备忘录 |

3.用设计模式的好处


或许你已从事程序开发工作多年, 却完全不知道单例模式是什么。 很多人都是这样。 即便如此, 你可能也在不自知的情况下已经使用过一些设计模式了。 所以为什么不花些时间来更进一步学习它们呢?

  • 设计模式是针对软件设计中常见问题的工具箱, 其中的工具就是各种经过实践验证的解决方案。 即使你从未遇到过这些问题, 了解模式仍然非常有用, 因为它能指导你如何使用面向对象的设计原则来解决各种问题。

  • 设计模式定义了一种让你和团队成员能够更高效沟通的通用语言。 你只需说 “哦, 这里用单例就可以了”, 所有人都会理解这条建议背后的想法。 只要知晓模式及其名称, 你就无需解释什么是单例。

二、一句话解读

====================================================================

到压轴菜了,一张表,每个设计模式一句话,不懂你来公众号找我。

| 设计模式 | 标准定义 | 通俗解读 | 详细讲解 |

| :-- | :-- | :-- | :-- |

| 工厂方法Factory Method | 定义一个用于创建对象的接口,让其子类决定将哪一个类实例化。 | 兵工厂:给你产了把M416,你拿着它吃了鸡;给你女朋友一把AK47,落地成盒。 | 传送门 |

| 建造者Builder | 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 | 生产流水线:以前是手工业,由人工把单个的生产零件一步步组装好,后来有了工业革命,都由生产流水线代替。 | 待完成 |

| 原型Prototype | 用原型实例指定创建对象的种类,并且通过拷贝这个原型来创建新的对象。 | 印刷术:以前只能临贴抄写费时费力,效率极低,有了印刷术,突突的。 | 待完成 |

| 单例singleton | 保证一个类仅有一个实例,并提供一个访问它的全局访问点。 | 确保唯一:你养了6只猫,他们饿了都找你,你是唯一的,不会有第二个。 | 待完成 |

| 适配器Adapter | 将一个类的接口转换成客户希望的另外一个接口。使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 | 翻译官:你去美国外,你只会中文,当地人只会英文,导游都会——Adapter | 待完成 |

| 装饰器Decorator | 动态地给一个对象添加一些额外的职责。就扩展功能而言,比生成子类方式更为灵活。 | 衣服:人靠衣装马靠鞍,打扮打扮,弄点装饰,好看多了 | 待完成 |

| 桥接Bridge | 将抽象部分与它的实现部分分离,使它们都可以独立地变化。 | 马有黑白公母之分。说这是马太抽象,说这是黑色的公马又太死板,只有说这是(黑色的或白色的)(公或母)马才显得灵活而飘逸。 | 待完成 |

| 组合Composite | 将对象组合成树形结构以表示“部分-整体”的层次结构。使得客户对单个对象和复合对象的使用具有一致性。 | 大家族:子又生孙,孙又生子,子子孙孙,无穷尽也,将众多纷杂的人口组织成一个按辈分排列的大家族即是此模式的实现。 | 待完成 |

| 外观Facade | 为子系统中的一组接口提供一个一致的界面, 定义一个高层接口,这个接口使得这一子系统更加容易使用。 | 求同存异:高中毕业需读初中和高中,博士也需读初中和高中,因此国家将初中和高中普及成九年制义务教育。 | 待完成 |

| 享元Flyweight | 运用共享技术有效地支持大量细粒度的对象。 | 一劳永逸:认识三千汉字,可以应付日常读书与写字,可见头脑中存在这个汉字库的重要。 | 待完成 |

| 代理Proxy | 为其他对象提供一个代理以控制对这个对象的访问。 | 垂帘听政:犹如清朝康熙年间的四大府臣,很多权利不在皇帝手里,必须通过辅佐大臣去办。 | 待完成 |

| 责任链Chain of Responsibility | 为解除请求的发送者和接收者之间耦合,而使多个对象都有机会处理这个请求。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它。 | 租房:以前为了找房到处打听,现在只需要找房屋中介,你找中介,中介找房东,直到你租到满意的房子。 | 待完成 |

| 命令Command | 将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可取消的操作。 | 借刀杀人:以前是想杀谁就杀,自己动手,导致结仇太多,于是假手他人,挑拨他人之间的关系从而达到自己的目的。 | 待完成 |

| 解释器Interpreter | 给定一个语言, 定义它的文法的一种表示,并定义一个解释器, 该解释器使用该表示来解释语言中的句子。 | 文言文注释:一段文言文,将它翻译成白话文。 | 待完成 |

| 迭代器Iterator | 提供一种方法顺序访问一个聚合对象中各个元素, 而又不需暴露该对象的内部表示。 | 赶尽杀绝:一个一个的搜索,绝不放掉一个。 | 待完成 |

| 中介者Mediator | 用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 | 三角债:本来千头万绪的债务关系,忽出来一中介,包揽其一切,于是三角关系变成了独立的三方找第四方中介的关系; | 待完成 |

| 备忘录Memento | 在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到保存的状态。 | 记事本:记性不好,把发生的事记下来。 | 待完成 |

| 观察者Observer | 定义对象间的一种一对多的依赖关系,以便当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动刷新。 | 看守者:一旦被看守者有什么异常情况,定会及时做出反应。 | 待完成 |

| 状态State | 允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它所属的类。 | 发布博客:一篇博客有草稿,待审核,已发布三种状态,在这三种状态下发布会有不同的行为。 | 待完成 |

| 策略Strategy | 定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。本模式使得算法的变化可独立于使用它的客户。 | 久病成良医:人生病可以有各种症状,但经过长期摸索,就可以总结出感冒、肺病、肝炎等几种; | 待完成 |

| 模板方法Template Method | 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 | 理论不一定要实践:教练的学生会游泳就行了,至于教练会不会则无关紧要; | 待完成 |

| 访问者Visitor | 表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。 | 卖保险:优秀的保险代理人总能为不同类型的团体提供不同的保单。 | 待完成 |

以上就是23种设计模式的通俗解读,更详细的代码业务场景相关,一条会逐渐更新,并在本篇表格更新对应的文章地址,什么意思该懂了吧(快收藏呀)。

着急看的,欢迎到一条的公众号**一条IT**催稿。


我是一条,一个在互联网摸爬滚打的程序员。
道阻且长,行则将至。大家的 【点赞,收藏,关注】 就是一条创作的最大动力,我们下期见!
注:关于本篇博客有任何问题和建议,欢迎大家留言!

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
img

Java面试核心知识点笔记

其中囊括了JVM、锁、并发、Java反射、Spring原理、微服务、Zookeeper、数据库、数据结构等大量知识点。

蚂蚁金服(Java研发岗),26岁小伙斩获三面,收获Offer定级P6

Java中高级面试高频考点整理

蚂蚁金服(Java研发岗),26岁小伙斩获三面,收获Offer定级P6

蚂蚁金服(Java研发岗),26岁小伙斩获三面,收获Offer定级P6

最后分享Java进阶学习及面试必备的视频教学

蚂蚁金服(Java研发岗),26岁小伙斩获三面,收获Offer定级P6

…(img-6g5aVBQN-1711810257230)]

[外链图片转存中…(img-T6YsE21l-1711810257230)]

最后分享Java进阶学习及面试必备的视频教学

[外链图片转存中…(img-i3760WDH-1711810257230)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值