目录
单一职责原则
里氏代换原则
依赖倒置原则
接口隔离原则
迪米特法则
开闭原则
首页 后端开发 php教程 一看就懂系列之 php设计模式零

一看就懂系列之 php设计模式零

Jul 29, 2016 am 08:55 AM
addclass append parent php

友情链接:
1.一看就懂系列之 php设计模式(一)
2.一看就懂系列之 php设计模式(二)

前言

这篇文章是我写完三种设计模式之后才写的,究其原因呢,是由于今天get到了一些更为设计模式原则的东西,不管是设计模式还是大家平时写的代码,都会无意中用到何遵守的,我打算用自己的话来写一遍。

你不知道的设计模式原则

单一职责原则

定义

不要存在多于一个导致类变更的原因。通俗的说,即一个类只负责一项职责。

白话文理解

能分工协作的尽量分好工,各自负责自己的一块,并且把它做好就好了,避免相互影响。

里氏代换原则

定义

所有引用基类的地方必须能透明地使用其子类的对象,也就是说子类可以扩展父类的功能,但不能改变父类原有的功能

白话文理解

当要继承前人写的类的时候,尽量不重写和重载里面的方法,因为你根本不知道,哪里会被影响到。继承方法也尽量尊重原逻辑不轻易改变。

依赖倒置原则

定义

高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。

白话文理解

父亲模块不和其子模块相互依赖,最好都依赖第三方(抽象的类),可以避免高耦合的坑,万一产品改策略,也可以轻松通过横向扩展(再来一个继承抽象类的子类)来解决,继承的话遵循里氏代换原则

接口隔离原则

定义

客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上。

白话文理解

如果是通过接口进行编程的,不要将一堆抽象的方法放在接口类中,这样会造成继承的类还要去实现根本不属于它的方法,即使是接口,也尽量按照总分的概念去勾划,共用的写在一个接口类中,个别定制的应单独写,子类选择性继承接口类就好。

迪米特法则

定义

一个对象应该对其他对象保持最少的了解。

白话文理解

典型的知道了太多更容易死的道理,放在代码里就是,写一个模块的时候尽量能分就分,一个模块包含越多耦合越大,越容易出错,拆成各自独立模块,即使出问题也不会全盘崩。

开闭原则

定义

一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。

白话文理解

当产品需求变化时,尽量通过扩展软件实体的行为来实现变化(加类,加方法),而不是通过修改已有的代码来实现变化。

一个问题的讨论

<code>很多优化的地方都在说:高内聚低耦合,那么问题来了,高内聚低耦合真的好吗?</code>
登录后复制

我的看法是:看业务的具体逻辑,因为高内聚低耦合的话,一旦某一块业务相互关联又比较复杂,会直接导致很多独立的代码块存在,即使有备注,看起代码会给人一种跳来跳去的感觉,阅读性会降低,直接导致维护性会降低,当代码接手给别人时候,后人将在理解代码方面花费很多时候,寸步难行。听说适当的耦合代码和按具体依赖关系分块更配哦~
单纯的按照前人总结的抽象的规范写代码也是不对的,好的设计模式是一步一步改出来的,而不是一开始就设计好的。

欢迎留言分享

').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i ').text(i)); }; $numbering.fadeIn(1700); }); });

以上就介绍了一看就懂系列之 php设计模式零,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
4 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

适用于 Ubuntu 和 Debian 的 PHP 8.4 安装和升级指南 适用于 Ubuntu 和 Debian 的 PHP 8.4 安装和升级指南 Dec 24, 2024 pm 04:42 PM

PHP 8.4 带来了多项新功能、安全性改进和性能改进,同时弃用和删除了大量功能。 本指南介绍了如何在 Ubuntu、Debian 或其衍生版本上安装 PHP 8.4 或升级到 PHP 8.4

CakePHP 日期和时间 CakePHP 日期和时间 Sep 10, 2024 pm 05:27 PM

为了在 cakephp4 中处理日期和时间,我们将使用可用的 FrozenTime 类。

讨论 CakePHP 讨论 CakePHP Sep 10, 2024 pm 05:28 PM

CakePHP 是 PHP 的开源框架。它的目的是使应用程序的开发、部署和维护变得更加容易。 CakePHP 基于类似 MVC 的架构,功能强大且易于掌握。模型、视图和控制器 gu

CakePHP 文件上传 CakePHP 文件上传 Sep 10, 2024 pm 05:27 PM

为了进行文件上传,我们将使用表单助手。这是文件上传的示例。

CakePHP 创建验证器 CakePHP 创建验证器 Sep 10, 2024 pm 05:26 PM

可以通过在控制器中添加以下两行来创建验证器。

如何设置 Visual Studio Code (VS Code) 进行 PHP 开发 如何设置 Visual Studio Code (VS Code) 进行 PHP 开发 Dec 20, 2024 am 11:31 AM

Visual Studio Code,也称为 VS Code,是一个免费的源代码编辑器 - 或集成开发环境 (IDE) - 可用于所有主要操作系统。 VS Code 拥有针对多种编程语言的大量扩展,可以轻松编写

CakePHP 快速指南 CakePHP 快速指南 Sep 10, 2024 pm 05:27 PM

CakePHP 是一个开源MVC 框架。它使开发、部署和维护应用程序变得更加容易。 CakePHP 有许多库可以减少大多数常见任务的过载。

您如何在PHP中解析和处理HTML/XML? 您如何在PHP中解析和处理HTML/XML? Feb 07, 2025 am 11:57 AM

本教程演示了如何使用PHP有效地处理XML文档。 XML(可扩展的标记语言)是一种用于人类可读性和机器解析的多功能文本标记语言。它通常用于数据存储

See all articles