Table of Contents
Single Responsibility Principle
The Liskov Substitution Principle
Dependency Inversion Principle
Interface isolation principle
Demeter's Law
Open-Closed Principle
Home Backend Development PHP Tutorial PHP design pattern zero in the series 'You can understand it at a glance'

PHP design pattern zero in the series 'You can understand it at a glance'

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

Friendly links:
1. Understand at a glance series of PHP design patterns (1)
2. Understand at a glance series of PHP design patterns (2)

Foreword

This article was written after I finished writing the three design patterns. The reason is that I got some more design patterns today. Principles, whether it is design patterns or the code that everyone usually writes, will be inadvertently used and followed. I plan to write it in my own words.

Design Pattern Principles You Don’t Know

Single Responsibility Principle

Definition

Don’t have more than one reason for a class change. In layman's terms, a class is only responsible for one responsibility.

Vernacular understanding

Those who can divide and collaborate should try their best to divide the work well, each is responsible for his own piece, and just do it well to avoid mutual influence.

The Liskov Substitution Principle

Definition

All places that reference a base class must be able to transparently use the objects of its subclasses, that is to say, subclasses can extend the functions of the parent class, but cannot change the original features of the parent class. Function

Vernacular understanding

When inheriting a class written by predecessors, try not to overwrite and overload the methods inside, because you don’t know where it will be affected. Inheritance methods also try to respect the original logic and not change it easily.

Dependency Inversion Principle

Definition

High-level modules should not depend on low-level modules, both should rely on their abstractions; abstractions should not depend on details; details should depend on abstractions.

Vernacular understanding

The parent module does not depend on each other and its sub-modules. It is best to rely on third parties (abstract classes), which can avoid the pit of high coupling. In case of product strategy changes, it can also be easily expanded horizontally ( Let’s use another subclass that inherits the abstract class) to solve the problem. If you inherit, follow the Liskov substitution principle

Interface isolation principle

Definition

The client should not rely on interfaces it does not need; one class is dependent on another class Dependencies should be built on the smallest interface.

Vernacular understanding

If you are programming through an interface, do not put a bunch of abstract methods in the interface class. This will cause the inherited class to implement methods that do not belong to it at all, even if it is an interface. Also try to outline according to the concept of total score. Common ones should be written in an interface class, individually customized ones should be written separately, and subclasses can selectively inherit the interface class.

Demeter's Law

Definition

An object should keep the minimum knowledge about other objects.

Vernacular understanding

The typical truth is that if you know too much, you are more likely to die. When you put it in the code, try to divide it into parts as much as possible when writing a module. The more couplings a module contains, the greater the coupling and the easier it is to make mistakes. If it is broken into independent modules, even if something goes wrong, it will not completely collapse.

Open-Closed Principle

Definition

A software entity such as a class, module, and function should be open for extension and closed for modification.

Vernacular understanding

When product requirements change, try to achieve changes by extending the behavior of software entities (adding classes, adding methods), rather than by modifying existing code.

Discussion of a problem

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

My opinion is: it depends on the specific logic of the business. Because of high cohesion and low coupling, once a certain piece of business is interrelated and complex, it will directly lead to the existence of many independent code blocks, even if there are Note, looking at the code will give people a feeling of jumping around, which will reduce readability, which will directly lead to reduced maintainability. When the code is handed over to others, future generations will spend a lot of time understanding the code, making it difficult to move forward. I heard that proper coupling code and chunking according to specific dependencies are better~
It is also wrong to simply write code according to the abstract specifications summarized by predecessors. Good design patterns are modified step by step, rather than designed from the beginning.

Welcome to leave a message and share

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

The above introduces the PHP design pattern zero in the series that you can understand at a glance, including the content. I hope it will be helpful to friends who are interested in PHP tutorials.

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Best Graphic Settings
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. How to Fix Audio if You Can't Hear Anyone
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: How To Unlock Everything In MyRise
1 months ago By 尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

PHP 8.4 Installation and Upgrade guide for Ubuntu and Debian PHP 8.4 Installation and Upgrade guide for Ubuntu and Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 brings several new features, security improvements, and performance improvements with healthy amounts of feature deprecations and removals. This guide explains how to install PHP 8.4 or upgrade to PHP 8.4 on Ubuntu, Debian, or their derivati

Discuss CakePHP Discuss CakePHP Sep 10, 2024 pm 05:28 PM

CakePHP is an open-source framework for PHP. It is intended to make developing, deploying and maintaining applications much easier. CakePHP is based on a MVC-like architecture that is both powerful and easy to grasp. Models, Views, and Controllers gu

CakePHP File upload CakePHP File upload Sep 10, 2024 pm 05:27 PM

To work on file upload we are going to use the form helper. Here, is an example for file upload.

How To Set Up Visual Studio Code (VS Code) for PHP Development How To Set Up Visual Studio Code (VS Code) for PHP Development Dec 20, 2024 am 11:31 AM

Visual Studio Code, also known as VS Code, is a free source code editor — or integrated development environment (IDE) — available for all major operating systems. With a large collection of extensions for many programming languages, VS Code can be c

How do you parse and process HTML/XML in PHP? How do you parse and process HTML/XML in PHP? Feb 07, 2025 am 11:57 AM

This tutorial demonstrates how to efficiently process XML documents using PHP. XML (eXtensible Markup Language) is a versatile text-based markup language designed for both human readability and machine parsing. It's commonly used for data storage an

CakePHP Quick Guide CakePHP Quick Guide Sep 10, 2024 pm 05:27 PM

CakePHP is an open source MVC framework. It makes developing, deploying and maintaining applications much easier. CakePHP has a number of libraries to reduce the overload of most common tasks.

PHP Program to Count Vowels in a String PHP Program to Count Vowels in a String Feb 07, 2025 pm 12:12 PM

A string is a sequence of characters, including letters, numbers, and symbols. This tutorial will learn how to calculate the number of vowels in a given string in PHP using different methods. The vowels in English are a, e, i, o, u, and they can be uppercase or lowercase. What is a vowel? Vowels are alphabetic characters that represent a specific pronunciation. There are five vowels in English, including uppercase and lowercase: a, e, i, o, u Example 1 Input: String = "Tutorialspoint" Output: 6 explain The vowels in the string "Tutorialspoint" are u, o, i, a, o, i. There are 6 yuan in total

Explain JSON Web Tokens (JWT) and their use case in PHP APIs. Explain JSON Web Tokens (JWT) and their use case in PHP APIs. Apr 05, 2025 am 12:04 AM

JWT is an open standard based on JSON, used to securely transmit information between parties, mainly for identity authentication and information exchange. 1. JWT consists of three parts: Header, Payload and Signature. 2. The working principle of JWT includes three steps: generating JWT, verifying JWT and parsing Payload. 3. When using JWT for authentication in PHP, JWT can be generated and verified, and user role and permission information can be included in advanced usage. 4. Common errors include signature verification failure, token expiration, and payload oversized. Debugging skills include using debugging tools and logging. 5. Performance optimization and best practices include using appropriate signature algorithms, setting validity periods reasonably,

See all articles