




免费预览已结束,剩余36页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PHP设计模式,StartGame,模仿cs,设计gungame的枪,面向过程的代码,echo“akfire”;echo“upsfire”;echo“amanisdead”;,问题,代码无法重用代码属于堆砌状态,简单来说,就是一堆shit根本无维护性可言,你的代码接手人会总是诅咒你,若最近运气很背,回想一下自己干过的坏事.,面向结构化的代码,functionupsFire()echo“upsFire!”;functionakFire()echoAkFire!;functionkillMan($gun)if($gun=ups)upsFire();elseif($gun=ak)akFire();echo“amanisdead”;,好处,代码可重用方便调用结构清晰,代码维护,维护期对原来代码进行修改,产生大问题,大问题描述一:原来执行代码调用,killMan(ups);若要加上一个M4枪调用呢?,大问题描述二:加入M4枪,描述:要修改killMan函数引发问题:破坏原有代码不可破坏原有代码的原因:原有代码经过多次修改和打补丁,已经处于稳定状态,新代码的修改会破坏原有代码,存在新的bug隐患.总结:代码越改越烂,然后软件就告诉你:tobeornotbe,Thatisaquestion!.=|看不懂?好了,中文版:生存还是死亡,这是一个问题!还看不懂?好了,简单版:软件告诉你,他挂了!,面向对象:考虑维护期的设计方式,classGunpublicfunctionkillMan(Guns$gun)$gun-fire();echo“amanisdead”;classm4GunextendsGunpublicfunctionfire()echo“m4isfire“;,调用方式:,$gun=newGun();$gun-killMan(newm4Gun);,维护期:新功能,你的游戏有很多人玩,所以游戏升级了,M4和AK有了导向飞机轰炸功能,UPS则没有.并且,我们有导航飞机轰炸功能的枪,有一百种.两个字:牛B.,代码修改:修改父类,classGunpublicfunctionkillMan(Guns$gun)$gun-fire();echo“amanisdead”;Publicfunctionnav()echo“bomberisbombing!”;,大问题:,UpsGun类不带有飞机导航系统,也有了这个功能.郁闷!,解决方式:覆盖,classupsGunextendsGunpublicfunctionfire()echo“m4isfire“;publicfunctionnav()/donothing;,你的新发现,不带飞机导航的类有一万种.吐血身亡你还需要导弹导航.吓的活过来,然后再吐血身亡你最重要的发现是你的代码已经死掉了.重要提示:大侠,请再战江湖!,设计模式概述,设计模式就像建筑师构造房子友好的封装模式实际在大型代码库中发挥更大作用,PHP常用模式,单例模式模版模式-抽象类(abstract)简单工厂模式观察者模式策略模式,StrategyPattern,策略模式,利用接口如何?,分开变化和不会变化的部分,“针对接口编程”真正的意思是“针对超类型(supertype)编程”,实现鸭子的行为,策略模式的概念,策略模式把行为和环境分割开来,环境类负责维护和查询行为类,各种算法则在具体策略(ConcreteStrategy)中提供。由于算法和环境独立开来,算法的增减和修改都不会影响环境和客户端。,策略模式的角色,环境(Context)角色:持有一个Strategy类的引用。抽象策略(Strategy)角色:这是一个抽象角色,通常由一个接口或抽象类实现。此角色给出所有的具体策略类所需的接口。具体策略(ConcreteStrategy)角色:包装了相关的算法和行为。,何时使用策略模式,如果在一个系统里有许多类,他们之间的区别在于他们的行为,那么使用策略模式可以动态地让一个对象的许多行为中选择一种行为。一个系统需要动态地在几个算法中选择一种。一个系统的算法使用的数据不可以让客户端知道。如果一个对象有很多的行为,如果不用恰当的模式,这些行为就只好使用多重的条件语句实现。,计模式总的原则,“创建优秀面向对象设
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年四平市事业单位专项招聘高校毕业生笔试模拟试卷及完整答案详解1套
- 埋地管道施工组织设计典型案例
- 企业集团培训需求分析与方案设计
- 物流公司仓库管理流程及标准模板
- 2025北京门头沟龙泉镇招聘乡村医生3人考前自测高频考点模拟试题及答案详解(考点梳理)
- 酒店工程维修方案范本
- 德阳建筑物加固施工方案
- 桥底停车场施工方案范本
- 药厂限量生产方案范本
- 东营钢质隔音门施工方案
- 高血压的中医食疗与养生
- 中医体质量表
- 明清传奇小说
- 荐五年级上册第三单元习作猎人海力布故事缩写两个基本方法
- 初中生物学教材解读人教八年级上册生物圈中的其他生物江艾佳细菌八年级上册生物
- GA 1809-2022城市供水系统反恐怖防范要求
- 2022年全国工会财务知识大赛参考题库精简600题(含各题型)
- GB/T 2072-2007镍及镍合金带材
- GB/T 13460-2016再生橡胶通用规范
- 基础观感验收自评报告
- 班级管理(第3版)教学课件汇总全套电子教案(完整版)
评论
0/150
提交评论