php设计模式课程---1、什么是设计模式

一、总结

一句话总结:经典场景的经典解决方法。

经典场景的经典解决方法

1、设计模式使用的通俗场景有哪些?

比如:拍电影时,常用设计模式

感情狗血剧:误会模式,某男和女同事,巧合手抓到一起,女朋友在窗外恰好看到。
杀人恐怖片:被坏人追杀,被害者跑到电梯里,电梯关到还有一道小缝隙时,坏人的匕首插进电梯缝隙关不上了。

2、为什么出现设计模式?

模式是因为语言不够灵活,不能适应复杂的场景,而想出的办法。

3、为什么java中的设计模式比php中的多?

java作为一门静态语言,灵活度比php更低,所以需要这么多的设计模式:php是动态的弱类型语言,灵活度比java要高很多

所以php中的设计模式不能照搬java中的二十几个设计模式,不然会出错

二、什么是设计模式(百度)

设计模式(Design Pattern)是一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总结。
使用设计模式的目的:为了代码可重用性、让代码更容易被他人理解、保证代码可靠性。 设计模式使代码编写真正工程化;设计模式是软件工程的基石脉络,如同大厦的结构一样。
设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。
设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。项目中合理地运用设计模式可以完美地解决很多问题,每种模式在现实中都有相应的原理来与之对应,每种模式都描述了一个在我们周围不断重复发生的问题,以及该问题的核心解决方案,这也是设计模式能被广泛应用的原因。 [1]

三、什么是设计模式?

一,定义

“每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心。这样,你就能一次又一次地使用该方案而不必做重复劳动”

尽管Alexander所指的是城市和建筑模式,但他的思想也同样适用于面向对象设计模式,只是在面向对象的解决方案里,我们用对象和接口代替了墙壁和门窗。两类模式的核心都在于提供了相关问题的解决方案。

一般而言,一个模式有四个基本要素:

1. 模式名称(pattern name) 一个助记名,它用一两个词来描述模式的问题、解决方案和效果。

2. 问题(problem) 描述了应该在何时使用模式。它解释了设计问题和问题存在的前因后果,它可能描述了特定的设计问题,如怎样用对象表示算法等。也可能描述了导致不灵活设计的类或对象结构。有时候,问题部分会包括使用模式必须满足的一系列先决条件。

3. 解决方案(solution) 描述了设计的组成成分,它们之间的相互关系及各自的职责和协作方式。因为模式就像一个模板,可应用于多种不同场合,所以解决方案并不描述一个特定而具体的设计或实现,而是提供设计问题的抽象描述和怎样用一个具有一般意义的元素组合(类或对象组合)来解决这个问题。

4. 效果(consequences) 描述了模式应用的效果及使用模式应权衡的问题。尽管我们描述设计决策时,并不总提到模式效果,但它们对于评价设计选择和理解使用模式的代价及好处具有重要意义。软件效果大多关注对时间和空间的衡量,它们也表述了语言和实现问题。因为复用是面向对象设计的要素之一,所以模式效果包括它对系统的灵活性、扩充性或可移植性的影响,显式地列出这些效果对理解和评价这些模式很有帮助。

二,类别划分

(1)目的准则:即模式是用来完成什么工作的。可分为创建型(Creational)、结构型(Structural)、行为型 (Behavioral)三种。

1)创建型模式与对象的创建有关;

2)结构型模式处理类或对象的组合;

3)行为型模式对类或对象怎样交互和怎样分配职责进行描述。

2)范围准则:指定模式主要是用于类还是用于对象。

1)类模式处理类和子类之间的关系,这些关系通过继承建立,是静态的,在编译时刻便确定下来了。

2)对象模式处理对象间的关系,这些关系在运行时刻是可以变化的,更具动态性。

从某种意义上来说,几乎所有模式都使用继承机制,所以“类模式”只指那些集中于处理类间关系的模式,而大部分模式都属于对象模式的范畴。

三,设计模式之间的关系

创建型类模式将对象的部分创建工作延迟到子类,而创建型对象模式则将它延迟到另一个对象中。

结构型类模式使用继承机制来组合类,而结构型对象模式则描述了对象的组装方式。

行为型类模式使用继承描述算法和控制流,而行为型对象模式则描述一组对象怎样协作完成单个对象所无法完成的任务。

还有其他组织模式的方式。有些模式经常会被绑在一起使用,例如,Composite常和Iterator或Visitor一起使用;

有些模式是可替代的,例如,Prototype常用来替代Abstract Factory;

有些模式尽管使用意图不同,但产生的设计结果是很相似的,例如,Composite和Decorator的结构图是相似的。

参考书籍:《Design Pattern》

参考:什么是设计模式? - xdyixia - 博客园
https://www.cnblogs.com/xdyixia/p/8177786.html
 

最新文章

  1. ftp文件的部署
  2. Linux C 文件与目录1 创建目录
  3. uvalive 7331 Hovering Hornet 半平面交+概率期望
  4. Table生成Excel表格
  5. 一个css和js结合的下拉菜单,支持主流浏览器
  6. React-使用装饰器
  7. mongoDB 文档操作_删
  8. Web Penetration Testing w3af fierce
  9. 算法导论 之 红黑树 - 删除[C语言]【转】
  10. python常用
  11. Java JMX 监管
  12. git如何自动打补丁
  13. 对比append插入数据产生的redo量
  14. 预处理ifndef
  15. ios 自定义消息提示框
  16. SPOJ GSS2 Can you answer these queries II ——线段树
  17. Word 格式优化
  18. 41.使用SAX读取XML
  19. hive动态分区与静态分区
  20. Spring MVC 配置类 WebMvcConfigurerAdapter

热门文章

  1. mysql命令行导入和导出数据
  2. Rocchio算法
  3. Mysql 复制表数据(表结构相同)
  4. Pexpect--example--hive.py解读
  5. hihoCoder #1312 : 搜索三·启发式搜索(A*, 康托展开)
  6. CAShapeLayer实现圆形进度条效果
  7. iOS使用正则匹配限制输入密码格式
  8. Centos 6 安装 python2.7 和 pip
  9. [note]可持久化Trie
  10. 如何从统计中批量获取BD搜索关键词及对应的入口页面?