PHP テンプレート モード
1. 定義: 動作アルゴリズムのフレームワークを定義し、一部のステップの実装をサブクラスに延期する
実際には、動作アルゴリズムの骨格は変更されない、つまり、動作アルゴリズムの中で何をすべきかを規定することを意味します。最初のステップと 2 番目のステップで何を行うか、具体的な内容は指定されていません。
2. 図
AbstractClass (抽象クラス): または特定のサブクラスが実装するためのより抽象的なメソッド。また、アルゴリズムのスケルトンを定義するためのテンプレート メソッドも実装します。
ConcreteClass (具象クラス): アルゴリズムの特定のサブクラスに関連するステップを完了するために、親クラスに抽象メソッドを実装します。
このスーパーマーケットでの買い物を例として考えます。彼は買い物がとても上手です。原則として、彼は通常 最初に本のセクションに行き、次に野菜と果物のセクションに行き、次に衣類、靴、帽子のセクションに行き、最後に家電とデジタルのセクションに行きます
そういえば、A さんは先週の土曜日にスーパーに行きました
彼は最初に書籍コーナーに行き、莫言の小説を見て、自分も見習わなければならないと感じました。群衆に群がって <> の本を買いました。すぐに私は周りの人々とは違う芸術的な若者になったように感じました
それから私は野菜と果物のセクションに行って見ました。私の大好きなオレンジ。 。 。 。 。 ;
その後、衣類、靴、帽子のセクションに行き、アディダスの最新モデルを試して購入しました。
家電とデジタルのセクションに行き、ある携帯電話に恋をしました。 、でも買うお金がなかった。
(これは ConcreteClass と同等です)
従来のコード:
1. 抽象クラス
abstract class AbstractClass{ public function trip(){ $this->bookTrip(); $this->vegetablesTrip(); $this->shoesTrip(); $this->digitalTrip(); } abstract protected function bookTrip(); abstract protected function vegetablesTrip(); abstract protected function shoesTrip(); abstract protected function digitalTrip(); }
class ConcreteClass extends AbstractClass{ protected function bookTrip(){ echo "买<<丰乳肥臀>>\n"; } protected function vegetablesTrip(){ echo "买10个橘子\n"; } protected function shoesTrip(){ echo "买阿迪王\n"; } protected function digitalTrip(){ echo "没钱没手机\n"; } }
$instance=new ConcreteClass(); $instance->trip();