PHP - 设计模式系列

1.应用场景

主要用于学习掌握编程中的设计模式,开发高质量, 易扩展,维护的程序。

学习掌握编程最佳实践。有时候也是为了应对面试,但不应该是作为有追求的编程者的主要目的。

2.学习/操作

1.文档阅读

PHP 设计模式系列 | Laravel 学院

2.整理输出

插入一段话

前饿了吗CTO

张雪峰:会,而且经常用,或者更多是用逻辑的思维。大家不要被一些所谓的计算机原则(典型如:低耦合、单一原则等)迷惑,数学原则才是宇宙终极原则。

就像我前面讲过的,什么时候该内聚、什么时候该解耦,你不要被表面迷惑。举个例子:当大于等于两个调用方(消费者),都会去调用一段逻辑的时候,就需要考虑抽象为 Function/Service/API,就这么简单。我经常会跟大家这样类比,不要把简单的业务问题人为地引向技术复杂化。如果是创新或试错业务,更要 Speed 第一,活下来后,才有时间谈 Architecture,最后才有机会上 Scale。之前提过的物流团队极致异步架构、部分团队微服务过度等,都是教训。还有,以上观点可能并不适用真正技术驱动业务的公司或业务,比如:Google、IaaS/PaaS、无人车等。数学是解释抽象最好的方式(物理也高度依赖抽象,但还需实验与观察),有人说为什么要学数学?买菜只要学小学数学不就行了?那不叫数学,那叫算术。开始有未知数这个概念才算摸到数学一点边。解方程有未知数,这就是一个抽象,然后再往上还有更高级的抽象,比如大学的抽象代数,可以把很多物理现象抽象出来。

PHP 设计模式系列


1、设计模式概述

在软件工程中,设计模式(Design Pattern)是对软件设计中普遍存在(反复出现)的各种问题,所提出的解决方案。

这个术语是由埃里希·伽玛(Erich Gamma)等人在1990年代从建筑设计领域引入到计算机科学的。

设计模式并不直接用来完成代码的编写,而是描述在各种不同情况下,要怎么解决问题的一种方案。

面向对象设计模式通常以类或对象来描述其中的关系和相互作用,但不涉及用来完成应用程序的特定类或对象。

设计模式能使不稳定依赖于相对稳定、具体依赖于相对抽象,避免会引起麻烦的紧耦合,以增强软件设计面对并适应变化的能力。

并非所有的软件模式都是设计模式,设计模式特指软件“设计”层次上的问题。还有其它非设计模式的模式,如架构模式。同时,算法不能算是一种设计模式,因为算法主要是用来解决计算上的问题,而非设计上的问题。

本系列是常见设计模式的集合以及如何在 PHP 中实现这些设计模式,并为每种模式提供了相应的示例代码。

很多人都知道设计模式,但并非都了解如何在具体应用中实现,基于此我们推出了这一系列教程。

补充

定义

设计模式(Design Pattern)是一套被反复使用、多数人知晓、经过分类的、代码设计经验的总结。

使用目的:为了代码可重用性、让代码更容易被他人理解、保证代码可靠性。

设计模式使代码编写真正工程化;设计模式是软件工程的基石脉络,如同大厦的结构一样。

模式是针对特定上下文中发生的问题的可重用解决方案. --- Chris <<微服务架构设计模式-aws 推荐.pdf>>

简单说,就是编程推荐的最佳实践~

起源

与很多软件工程技术一样,模式起源于建筑领域,软件工程只有短短的几十年,与已经拥有几千年底蕴的建筑工程相比,后者有太多值得学习和借鉴的地方。

哈佛大学的建筑学博士克里斯托弗.亚历山大,是建筑学领域的模式之父。他与其研究团队用了约20年的时间,对住宅和周边环境进行了大量的调查研究,发现人们对舒适住宅和城市环境存在一些共同的认同规律,将它们归纳成253个模式。对每一个模式都从前提条件、目标问题、 解决方案三个方面进行了描述,并给出了从需求分析到结构设计再到经典实例的过程模型。

所以,对模式的定义可以抽象为在特定环境下,人们为了解决某类重复出现问题,而总结归纳出来的有效解决方案。

诞生

GoF将模式的概念引入软件工程领域,这标志着软件模式的诞生。

软件模式并非仅限于设计模式,还包括架构模式、分析模式和过程模式等,实际上,在软件开发生命周期的每一个阶段都存在着一些被认同的模式。

软件模式主要由四部分构成,包括待解决问题、约束条件、解决方案、优点。

软件模式与具体的应用领域无关,也就是说无论从事的是移动开发、桌面开发、Web开发还是嵌入式软件的开发,都可以使用软件模式。

在软件模式中,设计模式是研究最为深入的分支,它融合了众多专家的设计经验,已经在成千上万的软件中得以应用。 1995年, GoF将收集和整理好的23种设计模式汇编成了一本名叫《设计模式》的书,该书的出版也标志着设计模式正式成为面向对象版软件工程的一个重要研究分支。

2、常用设计模式大全

设计模式可以按照 结构 被分成三种不同的类型:

2.1 创建型

在软件工程中,创建型设计模式用于处理对象的实例化:

2.2 结构型

结构型设计模式用于处理类和对象的组合:

2.3 行为型

行为型设计模式用于处理类的对象间通信:

2.4 其它

接下来本系列教程会对上述所有设计模式进行一一讲述,并且与 Laravel 框架结合讨论部分设计模式在 Laravel 中的优秀实践。

本系列教程蓝本参考GitHub项目: GitHub - DesignPatternsPHP/DesignPatternsPHP: sample code for several design patterns in PHP 8

转载自

PHP 设计模式系列 | Laravel 学院

查看了上面列出的设计模式

简单记忆几个--同时要弄清楚3W1H -- What why when how

创建型 -- 单例模式

            -- 多例模式

            -- 工厂模式

结构型 -- 依赖注入模式(DI)

            -- 门面模式(Facade)

            -- 代理模式(Proxy)

行为型 -- 观察者模式(Observer)

            -- 中介者模式(Mediator)

            -- 访问者模式(Visitor)

真的掌握,应对面试够了~

后续补充

...

3.问题/补充

TBD

4.参考

PHP 设计模式系列 | Laravel 学院

后续补充

...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值