设计模式面试题

article/2025/8/28 14:47:47

设计模式

详解

设计模式

参考:

https://www.jianshu.com/p/fc4b2e679a1e

 

单例模式

整个应用中保证只有一个类的实例存在

参考:

https://mp.weixin.qq.com/s/dlVXW6aW4wLcLpey9NxPig

饿汉式单例类

 

懒汉式单例类

  1. instance = new SingletonClass(); 指令重排序 其它线程可能会获取一个空对象。解决方式 加 volatile

  2. 反射不安全 构造函数抛异常

  3. 序列化不安全 重写 readResolve()

工厂模式

解释:不向外部提供具体的创建对象的方法,只要传入一个名字参数就可以获取对象

  

目的:将对象的创建和使用分离,使得系统更加符合“单一职责原则”,有利于对功能的复用和系统的维护

 

 

(1)简单工厂模式是由一个具体的类去创建其他类的实例,父类是相同的,父类是具体的。 (一个工厂,生产多个产品

 

(2)工厂方法模式是有一个抽象的父类定义公共接口,子类负责生成具体的对象,这样做的目的是将类的实例化操作延迟到子类中完成。 (product 中选择此种方式,一个抽象工厂,派生出多个具体工厂类,每个具体工厂类只能创建一个具体产品类的实例

 

(3)抽象工厂模式提供一个创建一系列相关或相互依赖对象的接口,而无须指定他们具体的类。它针对的是有多个产品的等级结构。而工厂方法模式针对的是一个产品的等级结构。 (一个抽象工厂类,可以派生出多个具体工厂类。 每个具体工厂类可以创建多个具体产品类的实例。)

 

工厂方法模式:

责任链模式

定义一个处理者的抽象类,按需添对应的具体实现的子类,然后把所有子类的按执行顺序关联起来。

参考:https://www.jianshu.com/p/c845028dd835

 

优点:

1.降低耦合,把请求者与处理细节分离,便于扩展。
2.简化对象,使对象责任更清晰,便于维护。
3.增加对象指派职责的灵活性。

缺点:

当处理对象过多时,会影响执行性能

 

Chain:定义处理请求的方法 & 提供设置关联类的方法。
AChain:处理请求的具体实现。
BChain:处理请求的具体实现。
CChain:处理请求的具体实现。

代理模式

通过 【代理】这个中介,把 ”目标对象功能“ 与 ”访问者“ 分离

参考:

https://www.jianshu.com/p/0f8f644fcb5e

 

优点:

1.职责清晰。
2.高扩展。
3.保护真实对象的使用权限。

 

缺点:

实现代理模式需要额外的工作,有些代理模式的实现非常复杂

静态代理

装饰模式

含义:为一个现有对象添加额外的功能

 

解决:.在一个类在扩展功能时,如果通过继承的方式扩展,随着功能增加越来越多时,就会导致子类爆炸

参考:

https://www.jianshu.com/p/16e946f42ce1

优点:装饰模式比继承关系更灵活;装饰类和被装饰类可以独立发展,不会相互耦合;

缺点:多层装饰比较复杂

观察者模式

解决:一个对象状态改变给其他对象通知

优点:观察者模式可以实现表示层和数据逻辑层的分离;观察者和被观察者是抽象耦合的

缺点:通知过多观察者很耗时

策略模式

将算法或者行为封装成一个一个的类,任意地替换

优点:策略模式可以避免使用多重条件转移语句;可以灵活地增加新的算法或行为

缺点:客户端必须知道所有的策略类

适配器模式

参考:

https://blog.csdn.net/taoszu/article/details/82795233

一个类的接口转换成客户希望的另外一个接口。保留现有类所提供的服务,向客户提供接口,以满足客户的期望。

比如:一个蓝球队,教练通过一个交流接口和所有的球员进行交流,突然来了一个外援(教练不会外语),那现在既要保留原有的交流,又要能够和外国人交流,这时候就出现一个翻译(适配器角色),满足了需求。

 

 


http://chatgpt.dhexx.cn/article/OexB5tS4.shtml

相关文章

设计模式面试题(设计模式速成版)

文章目录 说明名词解释UML基础面向对象编程中,都有哪些设计原则开闭原则里氏替换原则(Liskov Substitution Principle)依赖转置(依赖倒置)原则单一职责原则接口隔离原则迪米特法则合成复用原则 设计模式的分类创建型模…

【前端面试题】06—16道设计模式面试题(附答案)

设计模式不是针对某个框架的,而是针对某类问题或某类需求提出的,因此有广泛的适用性。 我们学习设计模式不仅要学习理论,还要学习如何解决实际工作中的问题,所以在面试中,设计模式通常是结合某类需求考察的。 1、什么是…

❤️设计模式肝完了,还挺全!腾讯和阿里的offer已拿!❤️

设计模式肝完了,还挺全!腾讯和阿里的offer已拿! 金九银十已经来了,挺近大厂最好的机会已经来了!如果你是要找工作的,一定要抓住这个机会! 前面已经整理了很多的面试资料: 1&#x…

「面试必背」设计模式面试题(收藏)

前言 设计模式在日常的工作中,是非常重要的一项技能,使用设计模式可以重构整体架构代码、提交代码复用性、扩展性、减少代码冗余问题。这是每个 Java 工程师必备的技能!今日小编主要讲的是设计模式之一的策略模式,小编会通过案例…

textRank杂谈

转自:这些文章 1. PageRank算法概述 PageRank,即网页排名,又称网页级别、Google左侧排名或佩奇排名。 是Google创始人拉里佩奇和谢尔盖布林于1997年构建早期的搜索系统原型时提出的链接分析算法,自从Google在商业上获得空前的成功后&#xff…

人工智能自然语言处理—PageRank算法和TextRank算法详解

人工智能自然语言处理—PageRank算法和TextRank算法详解 一、PageRank算法 PageRank算法最初被用作互联网页面重要性的计算方法。它由佩奇和布林于1996年提出,并被用于谷歌搜索引擎的页面排名。事实上,PageRank可以在任何有向图上定义,然后…

TextRank算法学习及使用

文章目录 一、算法思想二、python代码实现三、TextRank算法使用1、textrank4zh模块的安装2、实例介绍 总结 参考资料: 文本关键词抽取、文本摘要生成是自然语言处理(NLP)的应用之一,一定会对我们的生活产生巨大影响。随着数字媒体…

自然语言处理NLP--TextRank算法

文本摘要方法 早在20世纪50年代,自动文本摘要已经吸引了人们的关注。在20世纪50年代后期,Hans Peter Luhn发表了一篇名为《The automatic creation of literature abstract》的研究论文,它利用词频和词组频率等特征从文本中提取重要句子&…

【自然语言处理】基于TextRank算法的文本摘要

基于TextRank算法的文本摘要 文本摘要是自然语言处理(NLP)的应用之一,一定会对我们的生活产生巨大影响。随着数字媒体的发展和出版业的不断增长,谁还会有时间完整地浏览整篇文章、文档、书籍来决定它们是否有用呢? 利…

【自然语言处理】利用TextRank算法提取关键词

利用TextRank提取关键词 TextRank 是一种基于 PageRank 的算法,常用于关键词提取和文本摘要。在本文中,我将通过一个关键字提取示例帮助您了解 TextRank 如何工作,并展示 Python 的实现。 使用 TextRank、NER 等进行关键词提取 1.PageRank简…

【NLP】关键词提取:TFIDF、TextRank

前两天看到论文《Chinese Poetry Generation with Planning based Neural Network》中使用TextRank进行关键词提取。在阅读文章时也想到了除了TextRank之外,经常还使用TFIDF进行关键词提取。 一些算法的使用取决于业务场景和算法的特性。关键词提取是干什么的呢&am…

TF-IDF算法和TextRank算法的分析比较

TF-IDF算法 TF-IDF(词频-逆文档频率)算法是一种统计方法,用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。字词的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降…

Python文本处理工具——TextRank

背景 TextRank是用与从文本中提取关键词的算法,它采用了PageRank算法,原始的论文在这里。Github地址。 这个工具使用POS( part-of-speech tagging : 词性标注 )然后抽取名词,这种方法对于关键词提取独具特色。 注意: 先安装NL…

TextRank学习笔记

TextRank起源与PageRank TextRank的灵感来源于大名鼎鼎的PageRank算法,这是一个用作网页重要度排序的算法。 并且,这个算法也是基于图的,每个网页可以看作是一个图中的结点,如果网页A能够跳转到网页B,那么则有一条A-…

【TextRank】关键词提取 算法原理 公式推导 源码分析

1.前言 在介绍TextRank前,我想先给大家介绍下PageRank,实质上个人认为可以把TextRank当做PageRank2.0。 谷歌的两位创始人的佩奇和布林,借鉴了学术界评判学术论文重要性的通用方法,“那就是看论文的引用次数”。由此想到网页的重要…

NLP - 关键词提取 - TextRank

NLP - 关键词提取 - TextRank 一、TextRank介绍二、PageRank介绍三、PageRank计算过程四、关键词提取任务 一、TextRank介绍 TextRank算法则可以脱离语料库的基础,仅对单篇文档进行分析就可以提取该文档的关键词。这也是TextRank算法的重要特点。TextRank算法的基本…

textrank算法原理与提取关键词、自动提取摘要PYTHON

首先介绍原理与概念 TextRank 算法是一种用于文本的基于图的排序算法。其基本思想来源于谷歌的 PageRank算法(其原理在本文在下面), 通过把文本分割成若干组成单元(单词、句子)并建立图模型, 利用投票机制对文本中的重要成分进行排序, 仅利用单篇文档本…

TextRank算法总结

TextRank算法总结 最近在调研自动生成文本方面的内容,突然想到了自动文摘里的textRank,这里我将参考了一些资料并对这些知识点进行了整理总结,初步总结如下: 目录 PageRank简介基于TextRank的关键词提取基于TextRank的关键词短语提…

TextRank算法实践

TextRank算法实践 PageRank算法思想 TextRank算法的思想主要源于PageRank算法,PageRank算法主要用于给互联网网页排序,根据网页之间的跳转来构造一个初始权重矩阵(转移矩阵),默认每个网页质量都是1 使用一个向量v&…

TextRank算法的基本原理及textrank4zh使用实例

TextRank算法是一种文本排序算法,由谷歌的网页重要性排序算法PageRank算法改进而来,它能够从一个给定的文本中提取出该文本的关键词、关键词组,并使用抽取式的自动文摘方法提取出该文本的关键句。其提出论文是: Mihalcea R, Tarau P. TextRank: Bringing order into texts[…