Maison développement back-end tutoriel php php 策略模式的学习 --引自《深入php面向对象模式与实践》

php 策略模式的学习 --引自《深入php面向对象模式与实践》

Aug 08, 2016 am 09:28 AM
function return

#策略(Strategy)模式

#定义抽象类  Lesson
abstract class Lesson{
	private $duration;	
	private $coststrategy;		#定义属性

public function __construct($duration , CostStrategy $strategy){    
	#实例化时,传进来一个对象
	#用CostStrategy 类来处理 某个行为,而不用调用自身的方法来处理

	$this->duration =$duration;
	$this->coststrategy = $strategy;
}

public function cost(){
	return $this->coststrategy->cost($this);     #  ??? ??? ??? ??? ??? ??? ??? ??? ???
}		
#不是用抽象类的 abstract CostStrategy 类 中的方法 cost 来实现的,										
#从输出的值看来  是用的 
#TimedCostStrategy
#FixedCostStrategy  中 的方法,所以
# 在实例化对象时,用了  
#TimedCostStrategy
#FixedCostStrategy  中 的方法


public function chargeType(){
	return $this->coststrategy->chargeType();
}

public function getDuration(){
	return $this->duration;
}

}


abstract class CostStrategy{  					#抽象类是不能实例化的
	abstract function cost( Lesson $lesson); 	 	#传入的参数是对象
	abstract function chargeType();
}

class TimedCostStrategy extends CostStrategy{
	public function cost(Lesson $lesson){
		
		return ($lesson->getDuration()*5);   		
		#  在Lesson 类中,getDuration 的返回值是 return $this->duration;
	}

	public function chargeType(){
		return 'hourly rate!';
	}

}

class FixedCostStrategy extends CostStrategy{
	function cost(Lesson $lesson){
		return 30;
		#此处为调用如何方法,只是单纯的返回一个值
	}

	function chargeType(){
		return 'fixed rate';
	}
}

#继承类Lesson
class Lecture extends Lesson{

}

#继承类Lesson  
class Seminar extends Lesson{

}

#实例化对象
$lessons[] = new Seminar(4,new TimedCostStrategy());    #生成了一个TimeConsTrategy的一个对象 
$lessons[]= new Lecture(4 , new FixedCostStrategy());	#生成了一个FixedConsTrategy的一个对象

#分别 调用TimeConsTrategy && FixedConsTrategy 中的方法 const() 和 chargeType(),在执行遍历
foreach ($lessons as $lesson) {
	# 遍历输出
	print "lesson charge  {$lesson->cost()}==>>";		
	print "Charge type:   {$lesson->chargeType()}<br>";
}
Copier après la connexion

以上就介绍了php 策略模式的学习 --引自《深入php面向对象模式与实践》,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

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

Explication détaillée de l'utilisation de return en langage C Explication détaillée de l'utilisation de return en langage C Oct 07, 2023 am 10:58 AM

L'utilisation de return en langage C est la suivante : 1. Pour les fonctions dont le type de valeur de retour est void, vous pouvez utiliser l'instruction return pour terminer l'exécution de la fonction plus tôt. 2. Pour les fonctions dont le type de valeur de retour n'est pas void, la fonction de ; l'instruction return sert à terminer l'exécution de la fonction.Le résultat est renvoyé à l'appelant ;3. Terminer l'exécution de la fonction plus tôt que prévu.À l'intérieur de la fonction, nous pouvons utiliser l'instruction return pour terminer l'exécution de la fonction plus tôt. si la fonction ne renvoie pas de valeur.

Que signifie fonction ? Que signifie fonction ? Aug 04, 2023 am 10:33 AM

Fonction signifie fonction. Il s'agit d'un bloc de code réutilisable avec des fonctions spécifiques. C'est l'un des composants de base d'un programme. Il peut accepter des paramètres d'entrée, effectuer des opérations spécifiques et renvoyer des résultats. code pour améliorer la réutilisabilité et la maintenabilité du code.

Quel est l'ordre d'exécution des instructions return et enfin en Java ? Quel est l'ordre d'exécution des instructions return et enfin en Java ? Apr 25, 2023 pm 07:55 PM

Code source : publicclassReturnFinallyDemo{publicstaticvoidmain(String[]args){System.out.println(case1());}publicstaticintcase1(){intx;try{x=1;returnx;}finally{x=3;}}}# Sortie La sortie du code ci-dessus peut simplement conclure : return est exécuté avant finalement. Jetons un coup d'œil à ce qui se passe au niveau du bytecode. Ce qui suit intercepte une partie du bytecode de la méthode case1 et compare le code source pour annoter la signification de chaque instruction dans

Quel est le but de la fonction « enumerate() » en Python ? Quel est le but de la fonction « enumerate() » en Python ? Sep 01, 2023 am 11:29 AM

Dans cet article, nous découvrirons la fonction enumerate() et le but de la fonction « enumerate() » en Python. Qu'est-ce que la fonction enumerate() ? La fonction enumerate() de Python accepte une collection de données comme paramètre et renvoie un objet d'énumération. Les objets d'énumération sont renvoyés sous forme de paires clé-valeur. La clé est l'index correspondant à chaque élément, et la valeur est les éléments. Syntaxe enumerate(iterable,start) Paramètres iterable - Les données transmises dans la collection peuvent être renvoyées sous forme d'objet d'énumération, appelé iterablestart - Comme son nom l'indique, l'index de départ de l'objet d'énumération est défini par start. si nous ignorons

Explication détaillée du rôle et de la fonction de la table MySQL.proc Explication détaillée du rôle et de la fonction de la table MySQL.proc Mar 16, 2024 am 09:03 AM

Explication détaillée du rôle et de la fonction de la table MySQL.proc MySQL est un système de gestion de bases de données relationnelles populaire. Lorsque les développeurs utilisent MySQL, ils impliquent souvent la création et la gestion de procédures stockées (StoredProcedure). La table MySQL.proc est une table système très importante. Elle stocke les informations relatives à toutes les procédures stockées dans la base de données, y compris le nom, la définition, les paramètres, etc. Dans cet article, nous expliquerons en détail le rôle et les fonctionnalités de la table MySQL.proc

Explication détaillée des valeurs de retour de la fonction JavaScript et des instructions de retour Explication détaillée des valeurs de retour de la fonction JavaScript et des instructions de retour Aug 04, 2022 am 09:46 AM

Les fonctions JavaScript fournissent deux interfaces pour interagir avec le monde extérieur. Les paramètres servent d'entrée pour recevoir des informations externes ; la valeur de retour sert de sortie pour renvoyer les résultats de l'opération vers le monde extérieur. L'article suivant vous amènera à comprendre la valeur de retour de la fonction JavaScript et à analyser brièvement l'utilisation de l'instruction return. J'espère qu'elle vous sera utile !

Comment Vue3 utilise-t-il le sucre syntaxique de configuration pour refuser d'écrire le retour Comment Vue3 utilise-t-il le sucre syntaxique de configuration pour refuser d'écrire le retour May 12, 2023 pm 06:34 PM

Le sucre de syntaxe de configuration de Vue3.2 est un sucre de syntaxe au moment de la compilation qui utilise l'API combinée dans un composant de fichier unique (SFC) pour résoudre la configuration lourde de Vue3.0. Les variables, fonctions et contenus déclarés introduits par l'importation sont exposés via. return, afin qu'ils puissent être utilisés dans Vue3.0. Problèmes d'utilisation 1. Il n'est pas nécessaire de renvoyer les variables, fonctions et contenus déclarés introduits par import lors de l'utilisation. Vous pouvez utiliser du sucre syntaxique //importer le contenu introduit import{getToday. }from'./utils'//variable constmsg='Bonjour !'//function func

Comment utiliser la valeur de retour en Python Comment utiliser la valeur de retour en Python Oct 07, 2023 am 11:10 AM

L'utilisation de la valeur de retour Python est que lorsque la fonction exécute l'instruction return, l'exécution s'arrêtera immédiatement et la valeur spécifiée sera renvoyée à l'endroit où la fonction a été appelée. Utilisation détaillée : 1. Renvoie une seule valeur ; 2. Renvoie plusieurs valeurs ; 3. Renvoie une valeur nulle 4. Terminez l'exécution de la fonction plus tôt.

See all articles