浅谈设计模式

状态模式

核心思想就是用于解决一个物体在不同状态下复杂的逻辑行为,比如一个英雄有待机状态,行走状态,攻击状态,以后可能还会添加眩晕状态,冰冻状态一系列状态。
如果使用平常代码来写的话,就会使用分支语句来判断状态,这样会造成一个类其中包含大量代码的情况,这无疑是非常麻烦的,并且不利于后期增加新的状态。
所以抽象出一个状态接口用来表示所有的状态,接口包含进入状态的方法,执行状态的方法,退出状态的方法,
给主角创建一个私有的状态接口变量用来存储当前状态,当要改变状态时就调用原状态的退出方法,再设置新状态以及调用新状态的进入和处理方法,后期要增加新状态只需要增加新的状态类去继承状态接口就行,不用再改前面代码
在这里插入图片描述

有限状态机

传送门

外观模式

大家有没有自己做饭的经历,小明和小李合租,做饭的时候小明要吃青椒炒蛋,于是小明去厨房用厨具,花生油,做完一盘青椒炒蛋。然后小李要吃西红柿炒蛋,于是去厨房用厨具,过了一会,问小明,你把厨具放哪里去了。
于是这就出现问题,但是如果他们请个保姆,小明和小李把想要吃什么给告诉保姆,保姆去帮他们去做,这样因为是一个人去使用,就不会出现厨具乱丢的情况,这就是外观模式。
核心思想就是当一个模块要调用各个子系统去实现一个功能时,使用一个外观类去具体调用各个子系统,而外观类只要对外提供一个接口让其他模块去调用。
在这里插入图片描述

单例模式

核心思想,自身设置一个静态的自身类属性,在实体化出一个此类实例赋值给静态属性,这样就可以在任何模块方便调用。

中介者模式

核心思想,让各个系统通过一个中介者类来相互调用,减少各个系统之间的直接调用,让代码更加清晰。

桥梁模式

抽象调用方式,抽象出桥,就想桥一样把两个变化点给分开,不管桥的两端怎么变化,桥不会变,
给变化点的类抽象出父类,再创建出父类行为,也就是桥。
给手机贴膜,一个手机有可能贴不同材质的膜,一种材质的膜也有可能贴不同品牌的膜,不变的是贴膜这个行为,也就是桥不变,
在这里插入图片描述

策略模式

达到一个目的有不同的方法,比如一个人要从上海去北京,它可以选择做高铁去,也可以选择做火车去,也可以选择做飞机去,区别只是到达的时间不同,消耗的金钱不同,但最终都能到达北京,这种不同的方式就是不同的策略。
核心思想,把实现算法抽象出一个接口,具体调用时使用接口,在具体实现时,让客户自己去选择使用哪个算法实现。
在这里插入图片描述

模板方法模式

一个南方人请客吃饭,首先他要先点菜,然后吃东西(吃米饭),最后买单
一个北方人请客吃饭,首先他要先点菜,然后吃东西(吃面条),最后买单
可以发现上面两种请客吃饭的步骤情况就和模板中刻出来一样,不同的只是其中吃东西不一样,这就是模板模式。
核心就是在抽象类中定义一个请客的方法,然后定义点菜,吃东西,买单三个抽象方法,在请客方法中调用三个方法,然后每个继承类对这三个方法有不同实现就重写达到不同的效果。在这里插入图片描述

工厂模式

具体解释博文

建造者模式

博文

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/28170.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

青椒开计算机课,不断学习 砥砺前行——揭开青椒成长的秘密

从上海到梧州,1700多公里;从2017年9月到今天,300多个日子。我们在互联网结缘,我们在互加遇见。于是,便开始了一路美丽的相伴,相伴在“互加”,相伴在“青椒”,相伴在“美丽乡村”………

了解计算机软件系统教学设计,认识计算机》教学设计

认识计算机》教学设计 作为一名教职工,就有可能用到教学设计,教学设计一般包括教学目标、教学重难点、教学方法、教学步骤与时间分配等环节。那么什么样的教学设计才是好的呢?以下是小编整理的认识计算机》教学设计,仅供参考&…

Java 设计模式——组合模式

概述 有时我们可能会被要求处理一个层级结构明显的对象,比如上下级的公司员工、比如层级嵌套的文件夹,还有丰富多彩的美食菜单。可是,我们可能要屡试不爽地编写深度搜索代码、要小心翼翼地编写递归逻辑。现在你可以忘掉这些,学习…

设计模式之模板方法模式

概述 在面向对象程序设计过程中,程序员常常会遇到这种情况:设计一个系统时知道了算法所需的关键步骤,而且确定了这些步骤的执行顺序,但某些步骤的具体实现还未知,或者说某些步骤的实现与具体的环境相关。 例如&#…

matlab 滤波器设计工具,滤波器设计工具快速入门

滤波器设计工具快速入门 要打开滤波器设计工具,请键入 filterDesigner(在 MATLAB 命令提示符下键入。) 将打开滤波器设计工具并显示“设计滤波器”面板。 请注意,当您打开设计滤波器并未启用。您必须对默认滤波器设计进行更改以启用设计滤波器。每次您要更改滤波器设计时,均…

ChatGPT有用到知识图谱吗?| 文末送最新《知识图谱实战》书籍

文末留言点赞前五名送书,截止时间2023.4.2(本周日) 20:00 进NLP群—>加入NLP交流群(备注nips/emnlp/nlpcc进入对应投稿群) 从搜索引擎到个人助手,我们每天都在使用问答系统。问答系统必须能够访问相关的知识并进行推理。通常,知识可以隐式…

ChatGPT的诞生

这就是为什么ChatGPT 不可能在中国出现的原因 自欺欺人在家里玩可以,但是 你只是这世界的1/6而已,不可能 欺骗其他5/6的人类 最后还是自己傻比了

51 种 AI 工具,生活、编程、内容创建都应该使用它

AI 正在席卷全球 🔥🔥🔥 它具有无限的潜力,并将改变我们的生活,让生活变得更美好。这项技术将迅速改进,您今天可以使用许多工具来提高您的工作效率,帮助您完成工作,为您提供有关许多…

SpringBoot+Vue+Uniapp搭建的Java版本的ChatGPT智能Ai对话系统

chatgpt-java-system 介绍 SpringBootVueUniapp搭建的Java版本的ChatGPT智能Ai对话系统,小程序和H5包含智能Ai对话、精美Ai壁纸、知识付费商城、积分、会员、分享等公功能;后端管理包括系统管理、智能对话、基本设置、系统监控、代码生成、壁纸管理和商…

chatgpt赋能python:Python解决找零问题--极简演示

Python解决找零问题 – 极简演示 在日常生活中,我们经常需要进行找零计算。如果使用笔和纸来手动计算,则会浪费很多时间和精力。但是Python作为一种高级编程语言,可以轻松地解决这个问题,省去人工计算的烦恼。 什么是Python找零…

九龙证券|远离资本市场噪音的四种方法

我们都知道人是自我完成的群体,自我完成便是便是有方案有目的辅导自己的行为,目标或预期在很大程度上决定着人们的取得感,就好像以下公式所表现的相同:取得感所得/预期,那么股市中的预期是什么?怎么进行预期…

Redis漏洞导致ChatGPT重大故障,OpenAI公布技术细节

因公众号更改推送规则,请点“在看”并加“星标”第一时间获取精彩技术分享 点击关注#互联网架构师公众号,领取架构师全套资料 都在这里 0、2T架构师学习资料干货分 上一篇:ChatGPT研究框架(80页PPT,附下载)…

ChatGPT4 给出数据库开发者最容易犯的10个错误和解决方案

昨天 ChatGPT4 刚刚发布,迫不及待体验了一把。 ChatGPT 4 目前是付费使用,使用次数也有限制,门槛更高,API 调用费用是ChatGPT 3.5 的15倍,官网网站也经常登录不上。 我让 ChatGPT4 列举出【数据库开发者最容易犯的10个…

小白学习chatgpt

很明显,chatgpt的能力超出了人们过往对人工智能的认知,在使用过程中他的能力让我吃惊,而且具有通用性(AGI),这一点在以往的人工智能中表现得比较少,具体在GPT-4的早期实验报告中有更多的说明。可…

解密Prompt系列8. 无需训练让LLM支持超长输入:知识库 unlimiformer PCW NBCE

这一章我们聊聊有哪些方案可以不用微调直接让大模型支持超长文本输入,注意这里主要针对无限输入场景。之前在BERT系列中我们就介绍过稀疏注意力和片段递归的一些长文本建模方案长文本建模 BigBird & Longformer & Reformer & Performer,不过…

3DTrans: 首个支持自动驾驶室外点云迁移学习的代码库

本文将为大家介绍上海人工智能实验室交通平台组ADLab的3DTrans代码库–首个自动驾驶室外3D点云迁移学习的代码库。此外3DTrans代码库还是Uni3D(CVPR-2023)和Bi3D(CVPR-2023)的官方实现代码库。 Code Link: https://github.com/PJ…

文心一言 VS chatgpt (21)-- h264编码一帧数据的流程是怎样的?

h264编码一帧数据的流程是怎样的? 文心一言: H.264编码将一帧数据分成多个块,其中每个块可以单独进行编码。编码的过程包括预测、变换和量化等步骤。 具体流程如下: 1.帧内预测:对一帧视频进行编码,首先…

chatgpt赋能python:用Python计算AIC:一种常用的信息标准

用Python计算AIC:一种常用的信息标准 介绍 AIC(赤池信息准则)是一种用于模型选择的信息理论标准,旨在平衡模型复杂度和拟合准确度的权衡。在统计学和机器学习中,模型选择是一项关键任务,因为正确选择模型…

chatgpt赋能python:Python中如何产生0到1包括1的随机数

Python中如何产生0到1包括1的随机数 Python作为一种高级编程语言,被广泛运用于各种程序开发领域,尤其得到了数据科学、数据分析和机器学习领域的青睐。在Python中,实现随机数的生成是很平凡的,下面我将会给大家介绍如何使用Pytho…

chatgpt赋能python:Python的UUID是什么?

Python的UUID是什么? Python的UUID是一种广泛使用的标识符生成器,全称是“通用唯一标识符”。UUID可以帮助你在使用Python编程时生成唯一的ID。无论你在哪个项目中使用Python,UUID都会非常有用。 使用Python编程的开发者一定会碰到需要生成…