#设计模式##描述这是一组众所周知的设计模式以及一些示例代码的集合,这些示例代码如何在C++,Java,Python等中(稍后)实现它们。
##进步图案描述C++JavaPythonPHPPerl单身人士代理人建造者命令装饰工正面观察者模板适配器轻量级桥合成的口译员[去做]调解员纪念状态原型战略游客简单工厂[去做]抽象工厂工厂方法责任链迭代器[去做]空对象[去做]对象池[去做][去做]私有类数据[去做][去做][去做][去做]##贡献请随意分叉并扩展现有示例,或者添加您自己的示例,并发送包含您所做更改的请求请求!##执照
2023/9/8 19:22:04 2.29MB Perl
1
目录第1章UML类图实训1.1知识讲解1.1.1UML概述1.1.2类与类的UML表示1.1.3类之间的关系1.2实训实例1.2.1类图实例之图书管理系统1.2.2类图实例之商场会员管理系统1.3实训练习第2章面向对象设计原则实训2.1知识讲解2.1.1面向对象设计原则概述2.1.2单一职责原则2.1.3开闭原则2.1.4里氏代换原则2.1.5依赖倒转原则2.1.6接口隔离原则2.1.7合成复用原则2.1.8迪米特法则2.2实训实例2.2.1单一职责原则实例分析2.2.2开闭原则实例分析2.2.3里氏代换原则实例分析2.2.4依赖倒转原则实例分析2.2.5接口隔离原则实例分析2.2.6合成复用原则实例分析2.2.7迪米特法则实例分析2.3实训练习第3章创建型模式实训3.1知识讲解3.1.1设计模式3.1.2创建型模式概述3.1.3简单工厂模式3.1.4工厂方法模式3.1.5抽象工厂模式3.1.6建造者模式3.1.7原型模式3.1.8单例模式3.2实训实例3.2.1简单工厂模式实例之图形工厂3.2.2工厂方法模式实例之日志记录器3.2.3抽象工厂模式实例之数据库操作工厂3.2.4建造者模式实例之游戏人物角色3.2.5原型模式实例之快速创建工作周报3.2.6单例模式实例之多文档窗口3.3实训练习第4章结构型模式实训4.1知识讲解4.1.1结构型模式概述4.1.2适配器模式4.1.3桥接模式4.1.4组合模式4.1.5装饰模式4.1.6外观模式4.1.7享元模式4.1.8代理模式4.2实训实例4.2.1适配器模式实例之算法适配4.2.2桥接模式实例之跨平台视频播放器4.2.3组合模式实例之杀毒软件4.2.4装饰模式实例之界面显示构件库4.2.5外观模式实例之文件加密4.2.6享元模式实例之围棋棋子4.2.7代理模式实例之日志记录代理4.3实训练习第5章行为型模式实训5.1知识讲解5.1.1行为型模式概述5.1.2职责链模式5.1.3命令模式5.1.4解释器模式5.1.5迭代器模式5.1.6中介者模式5.1.7备忘录模式5.1.8观察者模式5.1.9状态模式5.1.10策略模式5.1.11模板方法模式5.1.12访问者模式5.2实训实例5.2.1职责链模式实例之在线文档帮助系统5.2.2命令模式实例之公告板系统5.2.3解释器模式实例之机器人控制程序5.2.4迭代器模式实例之商品名称遍历5.2.5中介者模式实例之温度转换器5.2.6备忘录模式实例之游戏恢复点设置5.2.7观察者模式实例之股票变化5.2.8状态模式实例之银行账户5.2.9策略模式实例之电影票打折5.2.10模板方法模式实例之数据库操作5.2.11访问者模式实例之奖励审批5.3实训练习第6章模式联用与综合实例实训6.1设计模式补充知识6.1.1反射与配置文件6.1.2GRASP模式6.1.3架构模式与MVC6.2模式联用实训6.2.1适配器模式与桥接模式联用6.2.2组合模式与命令模式联用6.2.3外观模式与单例模式联用6.2.4原型模式与备忘录模式联用6.2.5观察者模式与组合模式联用6.2.6访问者模式、组合模式与迭代器模式联用6.3综合实例实训6.3.1多人联机射击游戏6.3.2数据库同步系统6.4实训练习附录A参考答案A.1第1章实训练习参考答案A.2第2章实训练习参考答案A.3第3章实训练习参考答案A.4第4章实训练习参考答案A.5第5章实训练习参考答案A.6第6章实训练习参考答案参考文献
2023/8/13 15:25:23 32.93MB 设计模式 UML
1
本书系统介绍了设计模式。
全书共分27章,内容包括统一建模语言基础知识、面向对象设计原则、设计模式概述、简单工厂模式、工厂方法模式、抽象工厂模式、建造者模式、原型模式、单例模式、适配器模式、桥接模式、组合模式、装饰模式、外观模式、享元模式、代理模式、职责链模式、命令模式、解释器模式、迭代器模式、中介者模式、备忘录模式、观察者模式、状态模式、策略模式、模板方法模式和访问者模式。
[1]本书结合大量实例来学习GoF设计模式,针对每一个设计模式均提供了一或两个实例,并对每一个模式进行了详尽的讲解,每一章最后均配有一定量的习题。
2023/8/13 2:18:01 263KB 设计模式 清华 刘伟 源码
1
用DDraw实现射击游戏阐发文档要点一:画图自动切割IDirectDrawSurface7::BltFast()方式中不自动切割成果,即当画图元素逾越窗口之外时不会自动切割,DDraw遴选自动漠视不画,组成一旦逾越窗口,画图元素会忽然磨灭。
处置这一下场的方式是手动切割,代码如下://自动切割 RECTscRect; //寄存之后窗口大小地域 ZeroMemory(&scRect,sizeof(scRect)); GetWindowRect(GetActiveWindow(),&scRect); //提防图片左上角逾越窗口左上角 if(xscRect.right?scRect.right:x; y=y>scRect.bottom?scRect.bottom:y; m_rect.right=x+m_rect.right-m_rect.left>scRect.right?scRect.right-x+m_rect.left:m_rect.right; m_rect.bottom=y+m_rect.bottom-m_rect.top>scRect.bottom?scRect.bottom-y+m_rect.top:m_rect.bottom;惟独将上述代码加在CGraphic::BltBBuffer()中的m_bRect=m_rect;前就可。
要点二:配景的滚轴实现 画配景能够分为如下三种情景: 情景一:配景图片与窗口等高 情景二:配景图片高度小于窗口高度 情景三:配景图片高度大于窗口高度上述教学图与代码相对于应地看,有助于约莫知道。
另外,要点一实现之后,由于已经能够自动切割,画配景能够用另外方式。
要点三:精灵图的实普通游戏中,如RPG游戏中的人物图、射击类游戏的飞机、爆炸等,叫做精灵图。
精灵图实际上是将齐全帧的图片放在一个文件中,游戏时靠一个RECT来抑制画图像文件中的哪一部份,进而抑制游戏展现哪一帧图,惟独抑制好RECT的位置就可。
如下图:抑制RECT的四个角的坐标的挪动,有如下代码:if(m_timeEnd–m_timeStart>100) //惟独到了100ms之后才画图 {m_ImageID++; if(m_ImageID-m_beginID>=num) { m_ImageID=m_beginID; //末了一帧的下一帧是第一帧 } m_timeStart=timeGetTime(); } intid=m_ImageID++; SetRect(&m_rect,41*id,0,41*(id+1),41); //飞机精灵图大小是41×41 m_pGraph->BltBBuffer(m_pImageBuffer,true,m_Pos.x,m_Pos.y,m_rect);如许就实现为了精敏捷画的下场。
要点四:拿STL举行枪弹的实现枪弹的实现能够使用STL中的vector,当按下开战键时收回一颗枪弹,就往vector中削减一个结点;
当枪弹飞出窗口或者击中敌机时,再将结点从vector中删除了。
每一帧游戏画面中枪弹翱翔时惟独将vector中的齐全枪弹举行处置、绘画就可。
参考代码如下:1.削减枪弹if(g_ctrlDown) //当ctrl键按下时开炮! { m_BulletEnd=m_Gtime->GetTime(); if((m_BulletEnd-m_BulletStart)*1000>120) //假如络续按着开战键不放,这里抑制不会收回太多枪弹 { m_BulletStart=m_BulletEnd; MBULLETtmpBullet; tmpBullet.pos.x=m_SPos.x-1; //记实开战时的枪弹位置 tmpBullet.pos.y=m_SPos.y-26; tmpBullet.speed=5; //该枪弹的翱翔速率 m_BulletList.push_back(tmpBullet); //将枪弹削减到vector中 } } 2.删除了枪弹vector::iteratoritei; //vector迭代器 for(itei=m_BulletList.begin();itei!=m_BulletList.end();itei++) //遍历齐全枪弹{m_BulletList.erase(itei); //删除了这个枪弹itei=m_BulletList.begin(); //删除了一个结点后,为防止侵蚀下次就重新查验if(m_BulletList.empty()) break; //若删除了结点后枪弹vector已经空则跳出轮回} 3.枪弹遍历处置vector::iteratoritei; //vector迭代器 for(itei=m_BulletList.begin();itei!=m_BulletList.end();itei++) //遍历齐全枪弹{itei->pos.y-=itei->speed; //枪弹翱翔}要点五:碰撞检测使用WindowsAPI函数RectInRegion:vector::iteratoritei; //vector迭代器for(itei=m_EnimyList.begin();itei!=m_EnimyList.end();itei++) //遍历齐全敌机{HRGNhrgn=::CreateRectRgn(m_player->pos.x,m_player->pos.y,m_player->pos.x+41,m_player->pos.y+41); //患上到飞机Region,图宽41高41 SetRect(&m_rect,itej->getPosition().x,itej->getPosition().y,itej->getPosition().x+50,itej->getPosition().y+50) //患上到敌机rect,敌机宽50高50 if(RectInRegion(hrgn,&m_rect)) //两机相撞 { ……………………. //碰撞之后的种种处置 }}让碰撞愈加准确:使用WindowsAPI函数PtInRegion()以及CreatePolygonRgn(),选取配角飞机的三个关键点的坐标放在POINT数组中,并将其作为参数代入CreatePolygonRgn()中天生HRGN,在枪弹与配角飞机做碰撞检测时惟独分辨枪弹的中间点能否在这个Region中就可(PtInRegion())。
留意:CreateRectRgn()与CreatePolygonRgn()等建树Region的函数会占用体系资源,由于游戏的主渲染函数Render()是络续实施的,如许会组成资源糜掷,于是在用完之后未必要释放:DeleteObject(region)要点六:敌机直线翱翔末了想这个下场的时候,感应很好实现,脑子里马上想到以及了。
其实如许实现有下场,当尽头以及尽头的连线斜率不是1或者-1时就会涌现意想不到的责任了,飞机并无直接飞向尽头,而因此斜率相对于值为1的路途飞已经往,再水平或者垂直飞向尽头。
处置这个下场有多少个方式,其中有一个方式是行使盘算机图形学上的Bresenhem直线算法。
该算法用于盘算机画平面上的直线,算法如下:|m|abs(deltaY))//轨迹斜率0)//1 { if(m_bFirstCalculate) { m_Delta=2*abs(deltaX)-abs(deltaY);//d0=2×dx-dy m_bFirstCalculate=false; } //依据轨迹斜率分辨能否要挪动X坐标 if(m_Delta>0)//m_iTempo)break;}//endofwhile(*pStr)
2023/5/1 0:27:02 2.18MB DDraw
1
EssentialC#6.0版本,相对于中文版,网上很难找到,适宜C#入门到进阶。
本书作者经由丰厚的示例以及详尽的教学,向读者片面揭示了C#语言的语法底子、中间学识以及低级主题。
从泛型、请托以及Lambda表白式,到群集、尺度运算符以及迭代器,从反射、特色以及动态编程,到多线程、异步以及并发,波及C#语言的齐全弥留方面。
是学习C#语言的首选之作
2023/4/21 7:36:22 80.21MB C#  本质论 6.0 Essential
1
用java编写的迭代器,实现10数字正反向遍历。
2023/4/17 4:46:29 2KB java 迭代器
1
本书详尽教学了ACM国内大教效法度圭表标准方案竞赛(ACM/ICPC)编程、调试方式,以及普及功夫、空间成果的策略,并欠缺行使了C++泛型编程的高功能、尺度化的特色,部份付与C++泛型编程。
第1章教学了ACM法度圭表标准方案入门学识;
第2章教学了C++泛型编程的容器、迭代器以及罕用算法;
第3章教学了ACM法度圭表标准方案的底子编程本领;
第4章教学了50道原版ACM竞赛题的解题思绪,并配有C++泛型编程参考谜底以及题目的中文翻译。
本书是一本特意针对于ACM国内大教效法度圭表标准方案竞赛而编写的入门教程,适宜到场ACM/ICPC的大教师以及C++编程喜爱者学习,对于ACM/ICPC竞赛锻练也具备未必的指点传染。
2023/4/2 1:56:54 1.51MB ACM程序设计
1
本书版权属于原作者,本人只是从网络收集到本资源,如侵犯了您的权力,请通知本人删除,本人不承担任何侵权责任。
C的新标准(C11/14)引入了许多强大易用的新特性新功能,从语言层面深刻地改变了C的开发范式。
Boost程序库由C标准委员会部分成员所设立的Boost社区开发并维护,它构造精巧、跨平台、开源并且完全免费,被称为“C‘准’标准库”,已广泛应用在实际软件开发中。
Boost内容涵盖智能指针、文本处理、并发、模板元编程、预处理元编程等许多领域,其范围之广内涵之深甚至要超过C11/14标准,极大地增强了C的功能和表现力。
本书基于C++标准和Boost程序库1.60版,深入探讨了其中的许多特性和高级组件,包括迭代器、函数对象、容器、流处理以及C语言中最复杂*威力的模板元编程和预处理元编程,具有较强的实用性,可协助读者深层次地理解掌握现代C的高级技术和Boost的内部实现机制及用法。
全书内容丰富、结构合理、概念清晰、讲解细致,是广大C程序员和爱好者的必备好书。
目录第0章导读1第1章全新的C语言7第2章模板元编程简介45第3章类型特征萃取55第4章实用工具75第5章迭代器117第6章区间163第7章函数对象185第8章指针容器199第9章侵入式容器251第10章多索引容器295第11章流处理343第12章泛型编程395第13章模板元编程415第14章预处理元编程453第15章现代C开发浅谈463
2023/2/16 15:50:44 65.66MB C++ boost
1
IKOSIKOS(开放静态分析器的推理内核)是基于抽象解释理论的C/C++静态分析器。
引见IKOS最初是一个C++库,旨在促进基于的声音静态分析器的开发。
对于一个应用程序或一系列应用程序,静态分析仪的专业化对于实现精度和可扩展性都至关重要。
开发这样的分析器是艰巨的,并且需要在抽象解释方面的大量专业知识。
IKOS提供了最先进的抽象解释数据结构和算法的通用且有效的实现,例如控制流图,定点迭代器,数字抽象域等。
IKOS独立于特定的编程语言。
IKOS还提供了基于的C和C++静态分析器。
它实现了可伸缩的分析,以检测和证明C和C++程序中没有运行时错误。
执照IKOS已根据NASA开源协议1.3版发布,请参阅接触发行说明见故障排除请参阅安装依存关系要构建和运行分析器,您将需要以下依赖项:支持C++14的C++编译器(gcc>=4.9.2
2023/1/27 2:49:52 2.34MB
1
迭代器钻头:过滤器学习目标定义filter()方法的工作方式展示filter()使用filter()返回匹配结果介绍我们可能都有过在线过滤选择项的经验。
购物服装时,我们可能选择了一个尺寸,以便仅考虑所需的搜索结果。
或者,当您在线订购食物时,我们可以自定义结果,仅显示当前营业的餐馆或在我们附近提供送货服务的餐馆。
由于这是用户的通用需求,因而它也是Web程序员运行的通用功能。
在编程中有很多过滤方法,但是最简单的方法是使用filter()。
定义filter()方法的工作方式如果您有一个数组,但只想要其中的一些元素,那就是filter()进入的地方!您可以将filter()视为for循环,专门for保留或过滤掉数组中的某些值。
考虑以下代码:letarr=[1,2,3,4,5,6];leteven=[];for(v
2023/1/16 17:21:48 35KB JavaScript
1
共 34 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡