php 策略模式的學習 --引自《深入php物件導向模式與實務》
#策略(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/>"; }
以上就介紹了php 策略模式的學習 --引自《深入php物件導向模式與實作》,包含了方面的內容,希望對PHP教學有興趣的朋友有幫助。

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

C語言return的用法有:1、對於傳回值類型為void的函數,可以使用return語句來提前結束函數的執行;2、對於傳回值型別不為void的函數,return語句的作用是將函數的執行結果傳回給呼叫者;3、提前結束函數的執行,在函數內部,我們可以使用return語句來提前結束函數的執行,即使函數並沒有回傳值。

function是函數的意思,是一段具有特定功能的可重複使用的程式碼區塊,是程式的基本組成單元之一,可以接受輸入參數,執行特定的操作,並傳回結果,其目的是封裝一段可重複使用的程式碼,提高程式碼的可重複使用性和可維護性。

原始碼:publicclassReturnFinallyDemo{publicstaticvoidmain(String[]args){System.out.println(case1());}publicstaticintcase1(){intx;try{x=1;returnx;}finally{x=3;}}#輸出上述程式碼的輸出可以簡單地得出結論:return在finally之前執行,我們來看下字節碼層面上發生了什麼事情。下面截取case1方法的部分字節碼,並且對照源碼,將每個指令的含義註釋在

在本文中,我們將了解enumerate()函數以及Python中「enumerate()」函數的用途。什麼是enumerate()函數? Python的enumerate()函數接受資料集合作為參數並傳回一個枚舉物件。枚舉物件以鍵值對的形式傳回。 key是每個item對應的索引,value是items。語法enumerate(iterable,start)參數iterable-傳入的資料集合可以作為枚舉物件傳回,稱為iterablestart-顧名思義,枚舉物件的起始索引由start定義。如果我們忽

MySQL.proc表的功能與功能詳解MySQL是一種流行的關係型資料庫管理系統,開發者在使用MySQL時常常會涉及到預存程序(StoredProcedure)的建立與管理。而MySQL.proc表則是一個非常重要的系統表,它儲存了資料庫中所有的預存程序的相關信息,包括預存程序的名稱、定義、參數等。在本文中,我們將詳細解釋MySQL.proc表的作用與功能

Vue3.2setup語法糖是在單文件組件(SFC)中使用組合式API的編譯時語法糖解決Vue3.0中setup需要繁瑣將聲明的變量、函數以及import引入的內容通過return向外暴露,才能在使用的問題1.在使用中無需return宣告的變數、函數以及import引入的內容,即可在使用語法糖//import引入的內容import{getToday}from'./utils'//變數constmsg='Hello !'//函數func

JavaScript中return的用法,需要具體程式碼範例在JavaScript中,return語句用來指定從函數傳回的值。它不僅可以用於結束函數的執行,還可以將一個值傳回給呼叫函數的地方。 return語句有以下幾個常見的用法:傳回一個值return語句可以用來傳回一個值給呼叫函數的地方。下面是一個簡單的範例:functionadd(a,b){

clearstatcache()函數用於清除檔案狀態快取。 PHP快取以下函數傳回的資訊−stat()lstat()file_exists()is_writable()is_readable()is_executable()is_file()is_dir()filegroup()fileowner()filesize()filetype()fileperms()這樣做是為了提供更好的性能。語法voidclearstatecache()參數NA傳回值clearstatcache(
