当前位置: 首页 > news >正文

面试题汇总——设计模式

简单介绍

设计模式共有23种,创建型模式5种,结构型模式7种,行为型模式11种

  • 创建型:
    • 关注对象的创建过程,将对象的创建和使用分开,在使用对象时无须知道对象的创建细节
    • 对象实例化的模式,创建型模式用于解耦对象的实例化过程。
    • 单例模式、工厂方法模式、抽象工厂模式、建造者模式、原型模式
  • 结构型:
    • 把类或对象结合在一起形成一个更大的结构。
    • 适配器模式、桥接模式、组合模式、装饰模式、外观模式、亨元模式、代理模式
  • 行为型:
    • 类和对象如何交互,及划分责任和算法。
    • 访问者模式、模板模式、策略模式、状态模式、观察者模式、备忘录模式、中介者模式、迭代器模式、解释器模式、命令模式、责任链模式

面向对象(OOP)设计的7个原则

单、开、里、依、接、合、迪
目的:实现高内聚、低耦合,增加程序的可复用性、可扩展性和可维护性。

  • 单一职责原则SRP
    • 类的职责要单一,不能将太多的职责放在一个类中
    • 控制类的粒度大小、将对象解耦、提高其内聚性。
  • 开闭原则OCP
    • 对扩展开放,对修改关闭。
    • 在不修改一个软件实体的基础上去扩展其功能
    • 抽象化,是OCP的关键
  • 里氏替换原则LSP
    • 可以接受基类对象的地方,必然可以接受其子类
    • 是实现OCP的重要方式之一

相关文章:

面试题汇总——设计模式

简单介绍 设计模式共有23种,创建型模式5种,结构型模式7种,行为型模式11种 创建型: 关注对象的创建过程,将对象的创建和使用分开,在使用对象时无须知道对象的创建细节。对象实例化的模式,创建型模式用于解耦对象的实例化过程。单例模式、工厂方法模式、抽象工厂模式、建造…...

Java SpringMvc

0目录 java SpringMvc拓展 1.SpringMvc 创建工程,导入依赖 配置 web.xml文件 配置Spring配置文件,resources目录下新建applicationContext.xml 控制层配置 新建list.jsp并测试 Web.xml详解 如果required是true必须要传参 设置默…...

JVM运行时区域——对象创建内存分配过程

新创建的对象,都存放在伊甸园区域,当垃圾回收时,将伊甸园区域的垃圾数据销毁,然后将存活的对象转移到幸存者0区域,之后创建的新的对象还是存放在伊甸园区域,等到再次垃圾回收后,将伊甸园区域和幸…...

Springboot项目排除Bean的方法

前言: 在最近工作中,相关业务代码需要引用一个工具包。原来的同事在工具包中,封装了Spring AOP切面的Bean,但是这样的工具包非常不友好,工具包不应该有这些特殊的处理。有了这些特殊的处理,引用方也要特殊处…...

阿里云国际版云服务器防火墙设置

阿里云国际版云服务器防火墙设置 入侵防御页面为您实时展示云防火墙拦截流量的源IP、目的IP、阻断应用、阻断来源和阻断事件详情等信息。本文介绍了入侵防御页面展示的信息和相关操作,下面和012一起来了解阿里云国际版云服务器防火墙设置: 前提条件 您需…...

科技资讯|苹果开放Vision Pro头显开发套件申请,此前曝光三款电池

苹果今天宣布面向开发人员,正式接受 Vision Pro 头显开发套件申请,从而帮助其开发和测试应用程序。 苹果官方页面介绍,开发人员在获得 Vision Pro 头显开发套件之外,还可以获得设备设置和入门方面的帮助,与 Apple 专…...

Langchain 的 LLMChain

Langchain 的 LLMChain 1. 开始使用运行 LLM 链的其他方式解析输出从字符串初始化 LLMChain 是一个简单的链,它围绕语言模型添加了一些功能。它在整个LangChain中广泛使用,包括在其他链和代理中。 LLMChain 由 PromptTemplate 和语言模型(LL…...

100天精通Golang(基础入门篇)——第17天:深入解析Go语言中的指针

🌷 博主 libin9iOak带您 Go to Golang Language.✨ 🦄 个人主页——libin9iOak的博客🎐 🐳 《面试题大全》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 🌊 《I…...

第七章:WILDCAT: 弱监督学习的深度卷积神经网络用于图像分类、点位定位和分割

0.摘要 本文介绍了WILDCAT,一种深度学习方法,它旨在通过对齐图像区域来获得空间不变性和学习强烈局部化特征。我们的模型仅使用全局图像标签进行训练,并致力于三个主要的视觉识别任务:图像分类、弱监督的逐点对象定位和语义分割。…...

Axios-post请求下载文件

场景背景 1.一般来说,都是使用get请求后台接口,如此后台返回文件流于浏览器,则可直接下载。 2.那么除一般情况,就有特殊情况,比如你的请求接口参数特别长,此时便不可使用get请求,get请求的参数…...

视频增强技术-对比度增强

在图像处理中,由于获取的图像质量不好,需要通过对比度增强来提升图片质量,主要解决的是由于图像灰度级范围较小造成的对比度较低的问题,作用是使图像的灰度级范围放大,从而让图像更加清晰。主要对比度增强方法包括线性…...

uni-app点击按钮弹出提示框(以弹窗的形式显示),选择确定和取消

学习目标: 学习目标如下所示: uni-app点击提交按钮后弹出提示框,(以弹窗的形式显示),提示用户是否确认提交(即确定和取消),点击确定后调用真正的提交方法,将数据传给后端…...

linux部署es+kibana

部署kibana与es 3.4.1、拷贝文件 首先把elasticsearch-7.3.1-linux-x86_64.tar.gz 和kibana-7.3.1-linux-x86_64.tar.gz拷贝到linux上,比如我是拷贝/usr/local 目录下 3.4.2、解压文件 然后分别执行tar -zxvf elasticsearch-7.3.1-linux-x86_64.tar.gz和tar -zx…...

二十三种设计模式第十七篇--迭代子模式

迭代子模式是一种行为型设计模式,它允许你按照特定方式访问一个集合对象的元素,而又不暴露该对象的内部结构。迭代子模式提供了一种统一的方式来遍历容器中的元素,而不需要关心容器的底层实现。 该模式包含以下几个关键角色: 迭…...

《零基础入门学习Python》第056讲:论一只爬虫的自我修养4:网络爬图

今天我们结合前面学习的知识,进行一个实例,从网络上下载图片,话说我们平时闲来无事会上煎蛋网看看新鲜事,那么,熟悉煎蛋网的朋友一定知道,这里有一个 随手拍 的栏目,我们今天就来写一个爬虫&…...

23.7.26总结(博客项目)

接下来要完成: 从主页面点击进入时,通过作者id从数据库查找作者的nickname点击文章收藏(需要有收藏列表)首页还要加最新发布,点赞收藏最多作者名得改成文章作者(通过user_id从user表中拿数据)消…...

安全第一天

1. 编码 1.1 ASCLL编码 ASCII 是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。它是最通用的信息交换标准,并等同于国际标准ISO/IEC 646。 1.2 URL编码 URL:(统一资源定位器、定位地址,俗称网页…...

SpringCloud学习路线(12)——分布式搜索ElasticSeach数据聚合、自动补全、数据同步

一、数据聚合 聚合(aggregations): 实现对文档数据的统计、分析、运算。 (一)聚合的常见种类 桶(Bucket)聚合: 用来做文档分组。 TermAggregation: 按照文档字段值分组…...

cloudstack的PlugNicCommand的作用

PlugNicCommand是CloudStack中的一个命令,用于将一个网络接口卡(NIC)插入到虚拟机实例中。它的作用是将一个已存在的NIC连接到指定的虚拟机,以扩展虚拟机的网络功能。 具体来说,PlugNicCommand可以完成以下几个步骤&a…...

LT9211C 是一款MIPI/RGB/2PORT LVDS互转的芯片

LT9211C 1.描述: Lontium LT9211C是一个高性能转换器,可以在MIPI DSI/CSI-2/双端口LVDS和TTL之间相互转换,除了24位TTL到24位TTL,并且不推荐同步和DE的2端口10位LVDS和24位TTL之间的转换。LT9211C反序列化输入的MIPI/LVDS/TTL视…...

让普通鼠标秒变生产力工具:Mac Mouse Fix 深度体验指南

让普通鼠标秒变生产力工具:Mac Mouse Fix 深度体验指南 【免费下载链接】mac-mouse-fix Mac Mouse Fix - Make Your $10 Mouse Better Than an Apple Trackpad! 项目地址: https://gitcode.com/GitHub_Trending/ma/mac-mouse-fix 还在为Mac上鼠标滚轮滚动生硬…...

uni-app怎么使用Lottie动画 uni-app引入Json动画渲染教程【优化】

uni-app中Lottie动画需分端实现:H5用lottie-web(需条件引入),小程序用lottie-wx(JSON放lottie目录,组件带animation-path),App端用uni-lottie原生插件(JSON放nativeResou…...

保姆级教程:用Docker Compose和Nginx给内网Nexus仓库上HTTPS(自签证书避坑指南)

内网Nexus私有仓库HTTPS全栈实战:从Docker部署到证书信任闭环 当开发团队规模超过10人时,私有制品仓库就成了刚需。上周帮某金融客户部署内网Nexus时,发现Maven 3.8.1强制HTTPS的策略让很多工程师措手不及——内网没有公网域名,Le…...

C++的std--format编译期检查与类型安全输出在模板中的实现

C20引入的std::format为现代C带来了类型安全的格式化输出能力,其编译期检查机制与模板的结合更是为开发者提供了强大的工具。本文将深入探讨std::format在模板中的实现原理,揭示其如何通过编译期检查确保类型安全,并展示其在泛型编程中的独特…...

ofa_image-caption镜像免配置:内置CUDA 11.8+cuDNN 8.6预编译环境

ofa_image-caption镜像免配置:内置CUDA 11.8cuDNN 8.6预编译环境 你是不是也遇到过这种情况?看到一张有趣的图片,想为它配上一段精准的描述,却一时词穷。或者,手头有一大堆产品图片,需要批量生成英文介绍&…...

Instructions终极指南:5个简单步骤创建你的第一个iOS引导标记

Instructions终极指南:5个简单步骤创建你的第一个iOS引导标记 【免费下载链接】Instructions Create walkthroughs and guided tours (coach marks) in a simple way, with Swift. 项目地址: https://gitcode.com/gh_mirrors/in/Instructions Instructions是…...

一键生成爆炸图:Nano-Banana拆解引擎在产品说明书制作中的应用

一键生成爆炸图:Nano-Banana拆解引擎在产品说明书制作中的应用 1. 产品拆解可视化的行业痛点 在产品说明书、维修手册和教育材料的制作过程中,清晰展示产品内部结构和组件关系是至关重要的。传统方法通常面临三大挑战: 3D建模成本高&#…...

Phi-3-vision-128k-instruct Ollama国内镜像源加速部署与多模型管理

Phi-3-vision-128k-instruct Ollama国内镜像源加速部署与多模型管理 1. 为什么需要国内镜像源 如果你在国内尝试使用Ollama拉取Phi-3-vision这样的大型模型,可能会遇到下载速度慢甚至失败的问题。这是因为默认的模型仓库位于海外服务器,网络连接不稳定…...

Qwen3-14B Python数据分析环境配置:Anaconda与PyCharm集成

Qwen3-14B Python数据分析环境配置:Anaconda与PyCharm集成 1. 为什么需要专业的数据分析环境 在开始使用Qwen3-14B进行数据分析和AI应用开发前,搭建一个稳定、隔离的Python环境至关重要。想象一下,你正在装修房子,Anaconda就是你…...

避开PLC烧毁陷阱:FX3S晶体管输出必须知道的7个细节(含虚设电阻计算)

避开PLC烧毁陷阱:FX3S晶体管输出必须知道的7个细节(含虚设电阻计算) 在工业自动化现场,FX3S系列PLC的晶体管输出模块烧毁问题堪称"隐形杀手"。去年某汽车生产线因一个0.5A保险丝选型错误导致全线停产8小时,损…...