<?php //模板設計模式創建了一個實施一組方法和功能的抽象對象,子類通常將這個對象作爲模板用於自己的設計。 abstract class SaleItemTemplate{ public $price = 0; public final function setPriceAdjustments(){ $this->price += $this->taxAddition(); $this->price += $this->oversizedAddition(); } protected function oversizedAddition(){ return 0; } abstract protected function taxAddition(); } class CD extends SaleItemTemplate{ public $band; public $title; public function __construct($band, $title, $price){ $this->band = $band; $this->title = $title; $this->price = $price; } protected function taxAddition(){ return round($this->price * 0.05, 2); } } class BandEndorsedCaseOfCereal extends SaleItemTemplate{ public $band; public function __construct($band, $price){ $this->band = $band; $this->price = $price; } protected function taxAddition(){ return 0; } protected function oversizedAddition(){ return round($this->price * 0.2, 2); } } $externalTitle = 'fenghuangchuanqi'; $externalBand = 'zuixuanminzufeng'; $externalCDPrice = 100; $externalCerealPrice = 200; $cd = new CD($externalBand, $externalTitle, $externalCDPrice); $cd->setPriceAdjustments(); echo 'The total cost for CD item is:'.$cd->price.PHP_EOL; $cereal = new BandEndorsedCaseOfCereal($externalBand, $externalCerealPrice); $cereal->setPriceAdjustments(); echo 'The total cost for Cereal item is:'.$cereal->price.PHP_EOL; //創建定義了設計常規步驟,但實際邏輯留給子類進行詳細說明的對象時,最佳的做法是使用模板設計模式。
模板設計模式
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.