PHP耦合设计模式的理解
一个软件,它具有许多类,类与类之间需要互相调用,一旦某个类与另一个类具有紧密耦合关系的时候,这个软件的重用性就会大大降低。所以一个软件的重用性的高低就取决于它的耦合程度的高低。
耦合度:程序模块之间的关联、依赖程度。
在设计过程中提出:当设计这个软件的体系结构的时候,就发现了这个软件的逻辑运行部分(SimpleRouter类)和输出部分(SimpleRouterFrame类)不能很好的结合起来。即:我们不得不将程序界面的引用(reference to SimpleRouterFrame)一层一层的传递给程序的核心部分,以提供输出功能。
在开发过程中提出:当我们对输出界面(SimpleRouterFrame类)进行了一些修改后,特别是某些方法名称修改后,相应程序核心部分(SimpleRouter类)的代码也需要重新修改以适应这个新的输出界面。
问题的原因:类与类之间耦合的过于紧密,以至于每次需要修改一个类,它相应的关联类都需要修改代码来适应这个修改过的类。 比如说:某个类A需要直接显示的调用另一个类B的public方法,一旦B不再支持这个方法,或者重写了这个方法名称,A就需要重新编写代码来适应。另一种情况:某类A需要用到具有某种特定方法的类B,但B的形式并不确定,一旦B的内部结构改变,A就可能需要重写代码。
为避免这种情况,需要降低A与B之间的耦合度,不论形式如何,只要B仍然能够实现A所需要的功能,A就不需要重写代码, 解决方法:令B实现某种接口I,定义 I.Method(); 同时A在调用B的方法时候直接调用I的方法即可;而从前会将B当作参数传给A,然后A再调用B的方法的地方
{ A.AMethod( B b ) { b.BMethod(); /*….*/ } }
修改成:
{ A.AMethod( I i ) { i.Method(); } }
在这里,B只需要实现I.Method()方法即可,完全隐藏了实现细节。 按照这种方法,既实现了类与类之间的松散耦合,大大增强了类的可重用性。回顾从前学过的设计模式,可以发现,这与Observer模式有相似之处。
下面是一个完整的例子:
<?php interface Calculation { function compute($a, $b); } class Addition implements Calculation { function compute($a, $b) { return "加法运算结果为:".($a+$b); } } class Subtraction implements Calculation { function compute($a, $b) { return "减法运算结果为:".($a-$b); } } class Multiplication implements Calculation { function compute($a, $b) { return "乘法运算结果为:".($a*$b); } } class Division implements Calculation{ function compute($a, $b) { return "除法运算结果为:".($a/$b); } } class Modf implements Calculation { function compute($a, $b) { return "取模运算结果为:".($a % $b); } } class Coupling implements Calculation { //这里直接:public $varl = new LazyDog(); 会出错。 public $varl = null; function __construct() { $this->varl = new LazyDog(); } function compute($a, $b) { return $this->varl->say(); } } /*也可以用继承的方式实现哟: class Coupling extends LazyDog implements Calculation { function compute($a, $b) { return parent::say(); } } */ class LazyDog { function say() { return "我什么运算都不做...只是为了实现'耦合设计模式'...我是出来打酱油的......"; } } class Test { private $one; private $two; public function __construct($x,$y) { $this->one=$x; $this->two=$y; echo "Class Test 初始化:属性\$one=".$this->one.",属性\$two=".$this->two."<hr />"; } function display(Calculation $a){ return "用PHP接口技术实现的运算:".$a->compute($this->one,$this->two)."<hr />"; } } $t = new Test(96,12); $t1 = new Addition(); $t2 = new Subtraction(); $t3 = new Multiplication(); $t4 = new Division(); $t5 = new Modf(); $dog = new Coupling(); echo $t->display($t1); echo $t->display($t2); echo $t->display($t3); echo $t->display($t4); echo $t->display($t5); echo $t->display($dog); ?>
程序运行结果:
Class Test 初始化:属性$one=96,属性$two=12 用PHP接口技术实现的运算:加法运算结果为:108 用PHP接口技术实现的运算:减法运算结果为:84 用PHP接口技术实现的运算:乘法运算结果为:1152 用PHP接口技术实现的运算:除法运算结果为:8 用PHP接口技术实现的运算:取模运算结果为:0 用PHP接口技术实现的运算:我什么运算都不做...只是为了实现'耦合设计模式'...我是出来打酱油的......

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

PHP 8.4 apporte plusieurs nouvelles fonctionnalités, améliorations de sécurité et de performances avec une bonne quantité de dépréciations et de suppressions de fonctionnalités. Ce guide explique comment installer PHP 8.4 ou mettre à niveau vers PHP 8.4 sur Ubuntu, Debian ou leurs dérivés. Bien qu'il soit possible de compiler PHP à partir des sources, son installation à partir d'un référentiel APT comme expliqué ci-dessous est souvent plus rapide et plus sécurisée car ces référentiels fourniront les dernières corrections de bogues et mises à jour de sécurité à l'avenir.

Visual Studio Code, également connu sous le nom de VS Code, est un éditeur de code source gratuit – ou environnement de développement intégré (IDE) – disponible pour tous les principaux systèmes d'exploitation. Avec une large collection d'extensions pour de nombreux langages de programmation, VS Code peut être c

Si vous êtes un développeur PHP expérimenté, vous aurez peut-être le sentiment d'y être déjà allé et de l'avoir déjà fait. Vous avez développé un nombre important d'applications, débogué des millions de lignes de code et peaufiné de nombreux scripts pour réaliser des opérations.

Ce tutoriel montre comment traiter efficacement les documents XML à l'aide de PHP. XML (Language de balisage extensible) est un langage de balisage basé sur le texte polyvalent conçu à la fois pour la lisibilité humaine et l'analyse de la machine. Il est couramment utilisé pour le stockage de données et

JWT est une norme ouverte basée sur JSON, utilisée pour transmettre en toute sécurité des informations entre les parties, principalement pour l'authentification de l'identité et l'échange d'informations. 1. JWT se compose de trois parties: en-tête, charge utile et signature. 2. Le principe de travail de JWT comprend trois étapes: la génération de JWT, la vérification de la charge utile JWT et l'analyse. 3. Lorsque vous utilisez JWT pour l'authentification en PHP, JWT peut être généré et vérifié, et les informations sur le rôle et l'autorisation des utilisateurs peuvent être incluses dans l'utilisation avancée. 4. Les erreurs courantes incluent une défaillance de vérification de signature, l'expiration des jetons et la charge utile surdimensionnée. Les compétences de débogage incluent l'utilisation des outils de débogage et de l'exploitation forestière. 5. L'optimisation des performances et les meilleures pratiques incluent l'utilisation des algorithmes de signature appropriés, la définition des périodes de validité raisonnablement,

Une chaîne est une séquence de caractères, y compris des lettres, des nombres et des symboles. Ce tutoriel apprendra à calculer le nombre de voyelles dans une chaîne donnée en PHP en utilisant différentes méthodes. Les voyelles en anglais sont a, e, i, o, u, et elles peuvent être en majuscules ou en minuscules. Qu'est-ce qu'une voyelle? Les voyelles sont des caractères alphabétiques qui représentent une prononciation spécifique. Il y a cinq voyelles en anglais, y compris les majuscules et les minuscules: a, e, i, o, u Exemple 1 Entrée: String = "TutorialSpoint" Sortie: 6 expliquer Les voyelles dans la chaîne "TutorialSpoint" sont u, o, i, a, o, i. Il y a 6 yuans au total

Liaison statique (statique: :) implémente la liaison statique tardive (LSB) dans PHP, permettant à des classes d'appel d'être référencées dans des contextes statiques plutôt que de définir des classes. 1) Le processus d'analyse est effectué au moment de l'exécution, 2) Recherchez la classe d'appel dans la relation de succession, 3) il peut apporter des frais généraux de performance.

Quelles sont les méthodes magiques de PHP? Les méthodes magiques de PHP incluent: 1. \ _ \ _ Construct, utilisé pour initialiser les objets; 2. \ _ \ _ Destruct, utilisé pour nettoyer les ressources; 3. \ _ \ _ Appel, gérer les appels de méthode inexistants; 4. \ _ \ _ GET, Implémentez l'accès à l'attribut dynamique; 5. \ _ \ _ SET, Implémentez les paramètres d'attribut dynamique. Ces méthodes sont automatiquement appelées dans certaines situations, améliorant la flexibilité et l'efficacité du code.
