- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
面向对象与设计模式-教你写出优雅的代码ppt课件
zixue.it 燕十八 精品PHP教程 —高端PHP培训 高性能架构班! 燕十八 主讲 面向对象与设计模式 -教你写出优雅的代码 学习设计模式的意义 设计模式概念 先说多态 简单工厂模式 工厂方法模式 单例模式 观察者模式 职责链模式 策略模式 装饰模式 适配器模式 桥接模式 学习目录 学习设计模式的意义 1:更深入的理解面向对象的思想. 2:有利于开发出扩展性强的程序 3:面试时的重要考察方面 1:学习设计模式的意义 在软件开发过程中,经常出现的典型场景的典型解决方案,称为设计模式 2:设计模式的概念 生活中也有很多设计模式: 象棋招法,泡妞思路, 电影悬疑等等 2.1:动手造几个设计模式 典型场景: 同学聚会 典型问题: 问你工资 典型解决: ?? 典型场景: QQ,屌丝,女神 典型问题: 女神,还没睡? 典型解决: ?? 如何学习设计模式? 典型场景--典型问题--典型解决办法 3:先说多态 为什么先说多态? 答: 多态相对封装与继承,理解稍微复杂一些. 更重要的是, 通过PHP,Java多态的不同体现,体会静态语言与动态语言的巨大差异 --而这个差异巨大,影响到设计模式. 对于动态语言,不可照搬java,C++中的设计模式 3.1:多态 多态(Polymorphism) 是一个生物学上的概念, 指同一特种的多种表现形态. 如:西伯利亚虎一般重210-260公斤,而孟加拉虎一般180-230公斤 在面向对象中,指某种对象实例的不同表现形态. 多态特点,在静态语言中体现的更为明显. 3.2:老虎爬树 如不明,可看多态详细讲解:http://www.zixue.it/article-122-1.html 西伯利亚虎不能爬树 孟加拉虎可以爬树 那么老虎,到底能否爬树? [ 请看java与PHP演示 体会静态与动态的巨大差异 ] 4:简单工厂模式 Factory 4.1:分析问题 代码执行没问题,调用没问题! 但是: 你(客户端,调用者)怎么知道我有个DBmysql类, 和 DBMysqli类? 1:客户端应该只看到接口,不应该知道接口的实现. 体现封装隔离原则. 2:无论客户端,而是后端,都依赖于抽象接口,而非依赖于具体 4.2:解决问题 添加一个工厂,由工厂负责创造对象,并返回 4.3:用简单工厂后 4.4:用简单工厂的真正意义 看似仅仅是把创建对象的过程包装了一下,真正的变化在于面向接口,隔离封装, 客户端只知接口,不知具体实现. 后端的实现,只知接口,不管前端谁调用 4.5:简单工厂需改进之处 如果新增PDO方式,是否还要改Factory? 修改if/else分支? 违反开闭原则. 另:这个工厂如果分支足够多,能帮你创建所有的类,形成万能工厂,面向对象设计中,不推荐一个类的功能过多. 我们可以把有相关关系的产品交由一个工厂生产 1988年,勃兰特·梅耶(Bertrand Meyer)在他的著作 《面向对象软件构造(Object Oriented Software Construction)》中提出了开闭原则, 它的原文是这样:“Software entities should be open for extension, but closed for modification”。 翻译过来就是:“软件实体应当对扩展开放,对修改关闭”。 通俗的说: 添加新类/接口等进来行,修改不行. 开闭原则 5.0:工厂方法 Factory Method 工厂方法中,一个工厂生产多个零件,但零件的共同特点是--属于一个产品. 即 此工厂可以生产产品,而非单独的对象 6:单例模式 singleton 场景回放 6.1:问题--如何确保只制造一个对象? 1:对象的产生,需要new或者clone 2:防止产生过多的对象,要防止new和clone 3:综上,没有对象时,允许new,并把对象缓存. 下次直接返回该对象 6.2:解决效果 6.3:模式解析 1:我学java时听说有懒汉式和饿汉式单例模式 答:PHP的属性不支持表达式,不支持饿汉式 2:php的单例,仅指进程中单例,不似java,在整个内存中单例 7:观察者模式 Observer 7.1:一般的思路 1:判断选中的值 2:顺序下来,根据值,修改内容区域 3:再修改广告区域. if(v == 男) { 内容区背景变灰 广告区内容变成男人话题 } else if(v == 女){ 内容区背景变粉 广告区内容变成女人话题 } 问题在哪儿? 1:让你选择时引起3个区域的变化, 是否要修改if/elseif部分 2:如果选择女性样式,但不要变粉,现在流行变紫色,是否又要修改if
文档评论(0)