GoF这个大家庭——团结合作才是王道

Screenshot_2026-11-03-16-23-09-34.jpg 立即下载


     设计模式是在程序设计阶段使用的非常重要的工具,虽然说模式有千千万,但是在这里我们只学习23种设计模式和6种模式原则。

     首先,来讲个故事:从前,有个小国家叫设计模式国,他们里面有很多勤劳的人,随着经济的发展,它们的生活水平也在不断提高,对于生活的要求也不断提高,所以社会的分工就在不断的细化,然而越分越多,就造成了很多资源上的浪费。为了达到资源复用的目的,所以国王决定对人们进行分工,把擅长生产的人称为创建型人才,把需要处理很多关系的称到结构型人才,然后把最后一部分有很多自己特长的人称为行为型人才。

     因为被分到不同的组织里了,所以就有人想评评谁是最厉害的,大家因为这个挣得面红耳赤,最后劳民伤财也没有争出个个结果。国王为了每个人都能和睦相处,使资源不再浪费得到多次利用,做个好公民,颁布了6部法律,告诉他们,每个人担任的职责不一样。

                            

     在学习设计模式的时候,因为书上的例子讲的很生动,是由浅入深,动静结合,所以很好理解,设计模式是面向对象理解加深的好工具。

    就比如面向对象的4大核心,抽象、封装、继承、多态。还有关联、依赖、继承、泛化和组合/聚合这些关系构成了设计模式,千变万化的对象和对象关系,抽象和实例化关系,接口和对象的关系及一对一的关系、一对多的关系、多对多的关系等等。而且这些模式和生活的联系也很紧密,从吃饭到穿衣,到求职到加薪,等等等等,都是给我了非常大的启发——生活要学习,学习即生活。


    小菜学习完设计模式的时候,就做梦有个设计模式大赛,所有设计模式都被拉上了竞技场,经过层层删选,也没有得到冠军。因为设计模式的存在是为了让程序有可维护性、可复用性、可扩展性以及灵活性这些特性,单凭几点原则和在某些方面特有的作用,是不能达到目的的。我们学习设计模式就是要在实际编程中,选出最适合的进行使用。我想那样才是设计模式真正的魅力所在吧!



可能上面的例子或者图中的分类关系有些不妥的地方,我也相信其他人会有更好的分类方式,但是就让我们相信自己一次,多一种角度分析问题,或许下一次就会找到最合适的方法。




研发流程后端开发工具,提示功能开发效率 后端开发工具 立即下载

相关推荐

机器人具有扰动抑制功能的有限时间基于方位角的领航者-跟随者编队控制(Matlab代码实现)

内容概要:本文档标题为《Plecs全桥LLC谐振变换器仿真模型.txt》,但实际内容并未涉及该主题的具体技术细节或仿真建模过程。相反,文档实质是一份由科研服务团队发布的跨学科资源目录,集中展示了大量基于Matlab、Simulink、Python、PSCAD等平台实现的科研项目与算法开发案例,涵盖电力系统、无人机路径规划、微电网优化、状态估计、信号处理、车间调度、图像处理、通信技术、雷达追踪、智能优化算法等多个工程技术领域。每个条目以“【】”标注研究主题,并注明“Matlab代码实现”“Python代码实现”等形式,表明其为可提供技术支持与代码资源的服务项目。文档末尾频繁出现“完整资源下载:公众号——荔枝科研社”及百度网盘链接,明确体现出其作为科研辅助服务推广与引流工具的功能属性。; 适合人群:面向电气工程、自动化、控制科学与工程、计算机科学、智能制造、新能源、航空航天、通信工程及相关交叉学科的研究生、高校教师、科研人员及企业研发工程师。; 使用场景及目标:①为科研人员提供课题选题、技术路线设计与算法实现的参考范例;②辅助学生或研究人员完成课程设计、毕业论文、项目仿真与算法复现任务;③作为第三方技术服务团队的能力展示目录,便于潜在客户快速了解其在多领域提供的定制化仿真与算法开发服务范围。; 阅读建议:此文档并非传统意义上的学术论文或技术教程,而是一份高度碎片化、广告性质浓厚的资源索引清单。读者应忽略其误导性的文件名,将其视为一个综合性科研技术服务目录,重点关注自身研究方向相关的条目,并通过文末提供的公众号或网盘链接进一步获取具体代码与资料。同时,需注意甄别资源的技术质量、原创性与适用性,避免盲目依赖外部服务。

乘积最大的拆分(可重复)

最好的情况是全拆分为3,否则剩余一个2或4也可以。 public class DevideInt { public static int devidePlus(int n) { int ans=1; if(n%3==0) { int power=n/3; double d=Math.pow(3,power); ans=(int)d; }else if(n%3==...

God_Mood的博客 1438

自学篇--使用keil5.23创建一个stm32工程并编译(固件包自带版本)

之前在本科学习阶段学习过一点51单片机的知识,可是因为基本没有实践过几次现在已经完全忘记了。。前几天老师突然丢给我几个板子说让我把程序编译、烧写环境装好,当时我就震惊了,不过经过三四天的自我摸索,之后参考他人的学习经验,现在已经基本能处理这个问题了,所以为了方便后面的学者,主要也是为了把自己这几天的学习成果记录一下,我在这里把这个过程写下来。(因为刚刚接触,很多原理性的东西都还不懂,只是一个操作步

yang_csdnForOBTS的博客 8659

GOF设计模式

创建: 1.工厂模式: 相当于new,可是,实际情况是,通常我们都要在创建sample实例时做点初始化的工作,比如赋值 查询数据库等。如果创建sample实例时所做的初始化工作是很长一段代码,如果写入构造函数中,那你的代码很难看了 2.抽象工厂:横向拆分//个人感觉不怎么好用 A{},A1 extends A{}, A2 extends A{}, B{} B1 ext

a343315623的博客 362

K8s认证文件丢失的应急处理与恢复策略

本文详细介绍了Kubernetes(K8s)认证文件丢失时的应急处理与恢复策略。从快速诊断问题范围到不同场景的临时解决方案,再到深度恢复方案(无损重建、部分重置、完全重建),提供了全面的操作指南。同时强调了生产环境中的防丢失设计、高可用集群的特殊处理以及日常运维建议,帮助运维人员有效应对认证文件丢失的紧急情况。

weixin_33743248的博客 327

Python自动化批量识别化学分子结构——从图片到SMILES/SDF的实战指南

本文提供了使用Python自动化批量识别化学分子结构图片的实战指南。详细对比了基于Molvec API的在线快速方案与本地部署OSRA工具的两种路径,包含完整的代码示例、环境配置及优化技巧,帮助化学研究者高效地将图片批量转换为SMILES或SDF格式,显著提升数据处理效率。

apple5的专栏 946

GOF之状态模式

状态模式(State pattern)   什么是状态模式呢?所谓的状态模式,指的是对于同一个对象而言,不同的状态对应着 不同的行为,同时,这些状态和行为之间是可以转化的,由一个状态转向另外的一个状态。其实这样的例子生活中是很多的。     最常见的应该是红绿灯了。一共有三个状态。其中,红灯表示的是不可以通过,黄灯表示的是警告,绿灯表示的是可以通行。这是是同一个对象对应着不同的状态

li12412414的博客 1245

Cursor概述及环境配置

Cursor 是一款基于 AI 的代码编辑器,支持 VS Code 配置迁移和 Java 开发环境配置。主要功能分为 Cursor Settings(AI 相关设置)和 Editor Settings(基础编辑器设置)。用户可通过一键导入或手动方式迁移 VS Code 配置,配置包括主题、扩展和快捷键等。对于 Java 开发,需配置 JDK 和 Maven 路径,并安装 Java 扩展插件以获得完整开发体验,如代码补全、调试和 Maven 项目管理。此外,Cursor 支持汉化配置,用户可安装中文语言包切换

Knight 3556

测试那件小事

昨天晚上测得《Connect with English》今天晚上测得《赖世雄》

好记性不如烂笔头--玲博小记 1210

高通Sensor Tuning实战:手把手教你用Chromatix生成并打包bin文件(附避坑指南)

本文详细介绍了高通Sensor Tuning的全流程实战,从Chromatix配置到Bin文件加载验证。通过手把手教程,帮助开发者掌握Chromatix工具链的使用,避免常见配置错误,提升调试效率。特别针对kalama等新一代平台,提供经过验证的解决方案和避坑指南。

ios99的博客 483

STM32 上 FreeRTOS 的启动与任务调度详解

4. SysTick定时器:FreeRTOS启动调度器后,会接管STM32的SysTick定时器,用于生成系统节拍,因此不要在HAL库中重复配置SysTick(比如HAL_Init()中已配置,无需再手动调用SysTick_Config()),否则会导致系统节拍异常,任务延迟不准。2. 任务栈大小需按需配置,不是越大越好(浪费RAM),也不能太小(会导致栈溢出),比如简单的传感器读取任务,1024字(4096字节)足够,复杂任务(比如串口接收+数据解析)可调整为2048字。

qq_40170041的博客 867

无法直接启动带有“类库输出类型”的项目

在学习三层搭框架过程中,将bug修改完后,运行的时候,会弹出一个问题,(⊙o⊙)…不能运行,调试完了也卡不到效果啊,赶紧找解决方法。。 提示语: 无法直接启动带有“类库输出类型”的项目   若要调试此项目,请在此解决方案中添加一个引用库项目的可执行项目。将这个可执行项目设置为启动项           因为很久以前就遇到过这样问题,然后我就检查解决方案的启动项是不是设置错误了。但

好记性不如烂笔头--玲博小记 3519

U8二次开发CO-基于Net8调用COM对象

本文章介绍的U8二次开发CO技术,就是基于微软COM组件技术,使用微软开源的编程框架Net6/7/8/9来调用U8的COM组件,完成基本的登录认证,工作流处理,数据库操作等。

pccai的博客 5501

三层架构总结

碎碎念 这段时间看了很多的博客,我有很多的学习上的问题,虽然没有都明白了吧,最起码比不看之前对于三层的参数返回值传递更有感觉一些。

好记性不如烂笔头--玲博小记 1625

爱快路由(ikuai)多WAN口配置实战:提升网络带宽与稳定性

本文详细解析了爱快路由(ikuai)多WAN口配置的实战技巧,包括双线智能分流、毫秒级故障切换和带宽叠加利用等核心功能。通过七种配置方案和智能QoS策略,帮助企业提升网络带宽与稳定性,实现99.9%以上的高可用性。

weixin_30566063的博客 703

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

年终总结之那些年,我们用过的语言

我都学了哪些语言?                                                                                                                时间过得好快,转眼又到了该写年终总结的季节,春华秋实,这个季节适合收获。接触编程有两三年了,接触的语言也有好几个,还记得第一次学习编程语言学的是VB,那个时

好记性不如烂笔头--玲博小记 1430

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

GoF之迪米特法则

猫拿着手枪对着老鼠说:1+1等于几?。老鼠战战兢兢的回答:等..等于2。啪…,老鼠被打死了,猫酷酷的吹着枪管说:怪只怪你知道的太多了。 我们就在这个小故事里认识迪米特原则吧。

好记性不如烂笔头--玲博小记 1370

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

GoF之组合/聚合复用原则

组合/聚合复用原则(Composition/AggregationPrinciple )     该原则就是在一个新的对象里面使用一些已有的对象,使之成为新对象的一部分:新的对象通过向这些对象的委派达到复用已有功能的目的。     其实这里最终要的地方就是区分“has-a”和“is-a”的区别。继承虽好,可以实现父类代码的复用,但是相对于合成和聚合,继承的缺点在于:父类的方法全部暴露

好记性不如烂笔头--玲博小记 1255

GoF之开-闭原则

看完设计模式之后才知道设计模式大行其道是为什么,其根本原因就是为了实现代码的复用性,增加代码的可维护性、可扩展,以及灵活性。设计模式的实现遵循了一些原则,从而代码达到这些目的,设计模式对理解面向对象的三大特征有很好的启发,不看设计模式,很难深层地体会到面向对象开发带来的好处 。在刚开始学习中,很难做到将这些模式融汇贯通,所以这个需要我们在编码前多思考,等到想充分了,在开始实践编码。下面是 1.开

好记性不如烂笔头--玲博小记 1247

GoF之里氏代换原则

定义1:子类型必须能够替换掉它们的父类型。 定义2:如果对每一个类型为 T1的对象 o1,都有类型为 T2 的对象o2,使得以 T1定义的所有程序 P 在所有的对象 o1 都代换成 o2 时,程序 P 的行为没有发生变化,那么类型 T2 是类型 T1 的子类型。      描述:一个软件实体如果使用的是一个父类的话,那么一定适用于其子类,而且它察觉不出父类对象和子类对象的区别,也就是说,在软

好记性不如烂笔头--玲博小记 1239

GoF之单一职责原则

2.单一职责原则(Single Responsibility Principle) 定义:不要存在多于一个导致类变更的原因。通俗的说,即一个类只负责一项职责,应该仅有一个引起它变化的原因    说到单一职责原则,就让我想到了GTD的核心理念——清空大脑,只做一件事。就是把自己的精力和时间投入到单一的事物上,就可以高效的完成,不会做这件事想着那件事。在软件编程中,谁也不希望因为修改了一个功能导致

好记性不如烂笔头--玲博小记 1207

GoF之依赖倒转原则

依赖倒转原则(Dependence Inversion Principle) 定义:高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。即针对接口编程,不要针对实现编程。 看这个定义的时候有些不懂什么高层模块,低层模块,或者抽象和细节。但是细细的分析:    依赖倒转其实就是谁也不要依靠谁,除了约定的接口,大家都可以灵活自如。依赖倒转可以说是面向对象设计的

好记性不如烂笔头--玲博小记 1173

软考--面向对象

背景 今年开始软考的时间有点晚了,从报了名之后软考算是正式开始了,放下了其他的东西,全面开始软考(中级)模式。 听Mr.mi和考过的人说,软考就是对过去几年学习的总结和复习,它是一个分水岭,过了这一关,那么今后的学习会有不一样的感受。 面向对象思想在刚开始学习VB6.0时候就接触过,只是它并不完全是面向对象程序语言,后来接触的C++、C#、设计模式等知识的时候才有一个大概的了解。软考里面设计

好记性不如烂笔头--玲博小记 1164

抽象方法和虚方法 与设计模式

一、概念 抽象方法和虚方法是什么?先写一段代码看看他们俩的区别。 抽象方法使用abstract关键字;虚方法使用virtaul关键字。 //抽象方法 Public abstract class TestPaper { Public abstract Answer(); } //虚方法 Public class TestPaper { Public virtual Answer(){

好记性不如烂笔头--玲博小记 994

2018是2017的延续

有些东西的存在,不会是无缘无故的,他都是有一个引子,一种趋势的形成,也是在很久前,通过各种现象,行为的积累,然后由稚嫩到成熟的变化。 2018今年不是新的开始,而是2017定好的计划一个执行延续的一年。 2017年回顾 看了2017年初的计划,觉得自己还是很厉害的,最起码一年的计划,基本上都实现了,并且有的超出了自己的想象,而且在这个过程中,还有做了很多计划之外的东西《2016,轻轻

好记性不如烂笔头--玲博小记 560
上一篇: 构造函数和析构函数
下一篇: 测试那件小事
mayfla
博客等级 码龄14年 312粉丝 191原创
评论 9
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值