PHP-模板(template)形式

Jun 13, 2016 am 11:03 AM
abstract function protected

PHP-模板(template)模式
1.定义:定义一个操作的算法的框架,将一些步骤的实现推迟到子类.
其实意思就是操作的算法的骨架不变,即规定好了第一步应该干什么,第二步干什么,再次干什么,但是不规定具体内容.
2.图示
PHP-模板(template)形式
AbstractClass(抽象类):定义了一到多个的抽象方法,以供具体的子类来实现它们;而且还要实现一个模板方法,来定义一个算法的骨架。
ConcreteClass(具体类):实现父类中的抽象方法以完成算法中与特定子类相关的步骤


在此那超市购物为例子,如某A购物非常有规律,他一般先去书籍区转转,然后再去蔬菜瓜果区看看,再去服装鞋帽区逛逛,最后去家电数码区(这就相当与AbstractClass) 
话说上周六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();}
ログイン後にコピー

2.具体类
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";    }}
ログイン後にコピー

3.client
$instance=new ConcreteClass();$instance->trip();
ログイン後にコピー


最后模板模式的本质就是固定算法骨架
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

機能とはどういう意味ですか? 機能とはどういう意味ですか? Aug 04, 2023 am 10:33 AM

ファンクションとは、関数を意味します。これは、特定の関数を備えた再利用可能なコード ブロックです。プログラムの基本コンポーネントの 1 つです。入力パラメータを受け取り、特定の操作を実行し、結果を返すことができます。その目的は、再利用可能なコード ブロックをカプセル化することです。コードの再利用性と保守性を向上させるコード。

Python の「enumerate()」関数の目的は何ですか? Python の「enumerate()」関数の目的は何ですか? Sep 01, 2023 am 11:29 AM

この記事では、Python の enumerate() 関数と「enumerate()」関数の目的について学びます。 enumerate() 関数とは何ですか? Python の enumerate() 関数は、データ コレクションをパラメータとして受け取り、列挙オブジェクトを返します。列挙オブジェクトはキーと値のペアとして返されます。キーは各項目に対応するインデックス、値は項目です。構文 enumerate(iterable,start) パラメータ iterable - 渡されたデータ コレクションは、iterablestart と呼ばれる列挙オブジェクトとして返すことができます。 - 名前が示すように、列挙オブジェクトの開始インデックスは start によって定義されます。無視したら

MySQL.procテーブルの役割と機能の詳しい説明 MySQL.procテーブルの役割と機能の詳しい説明 Mar 16, 2024 am 09:03 AM

MySQL.proc テーブルの役割と機能の詳細な説明。MySQL は人気のあるリレーショナル データベース管理システムです。開発者が MySQL を使用する場合、多くの場合、ストアド プロシージャ (StoredProcedure) の作成と管理が必要になります。 MySQL.proc テーブルは非常に重要なシステム テーブルであり、ストアド プロシージャの名前、定義、パラメータなど、データベース内のすべてのストアド プロシージャに関連する情報が保存されます。この記事では、MySQL.proc テーブルの役割と機能について詳しく説明します。

Vue.use関数の使い方と機能 Vue.use関数の使い方と機能 Jul 24, 2023 pm 06:09 PM

Vue の使い方と機能.use Function Vue は、多くの便利な機能を提供する人気のフロントエンド フレームワークです。その 1 つは Vue.use 関数で、これを使用すると Vue アプリケーションでプラグインを使用できるようになります。この記事では、Vue.use 関数の使い方と機能を紹介し、いくつかのコード例を示します。 Vue.use 関数の基本的な使用法は非常に簡単です。Vue がインスタンス化される前に関数を呼び出し、使用するプラグインをパラメータとして渡すだけです。簡単な例を次に示します。 // プラグインの導入と使用

PHP の file_exists() 関数 PHP の file_exists() 関数 Sep 14, 2023 am 08:29 AM

file_exists メソッドは、ファイルまたはディレクトリが存在するかどうかを確認します。チェックするファイルまたはディレクトリのパスを引数として受け取ります。これは、ファイルを処理する前に存在するかどうかを知る必要がある場合に役立ちます。これにより、新しいファイルを作成するときに、この関数を使用してファイルがすでに存在するかどうかを確認できます。構文 file_exists($file_path) パラメータ file_path - 存在をチェックするファイルまたはディレクトリのパスを設定します。必須。 return file_exists() メソッドが戻ります。ファイルまたはディレクトリが存在する場合は TrueFalse を返し、ファイルまたはディレクトリが存在しない場合は TrueFalse を返します。 例として、「candidate.txt」ファイルのチェックを見てみましょう。

js関数の使い方は何ですか js関数の使い方は何ですか Oct 07, 2023 am 11:25 AM

js関数関数の使い方は、1. 関数の宣言、2. 関数の呼び出し、3. 関数のパラメータ、4. 関数の戻り値、5. 無名関数、6. パラメータとしての関数、7. 関数のスコープ、8. 再帰関数です。

Java 修飾子のabstract、static、finalの使用方法 Java 修飾子のabstract、static、finalの使用方法 Apr 26, 2023 am 09:46 AM

修飾子abstract (abstract) 1. 抽象はクラスを変更できる (1) 抽象によって変更されたクラスを抽象クラスと呼びます (2) 構文: abstractclass クラス名 {} (3) 特徴: 抽象クラスは個別にオブジェクトを作成できませんが、オブジェクトを作成することはできます。宣言される 抽象クラス名の参照名を参照する (4) 抽象クラスはメンバ変数とメンバ メソッドを定義できる (5) 抽象クラスにはコンストラクタがある サブクラス オブジェクトの作成に使用される場合、jvm はデフォルトで親クラス オブジェクトを作成する;抽象コンストラクタ メソッドが適用されるjvm が親クラス オブジェクトを作成するときに適用されます。 2. Abstract はメソッドを変更できる (1) asbtract によって変更されたメソッドを抽象メソッドと呼びます (2) 構文: アクセス修飾子の抽象戻り値

Java では、トップレベルのクラスを protected または private として宣言できますか? Java では、トップレベルのクラスを protected または private として宣言できますか? Sep 12, 2023 pm 07:21 PM

いいえ、トップレベルのクラスをプライベートまたは保護されたものとして宣言することはできません。 public またはデフォルト (修飾子なし) にすることができます。修飾子がない場合は、デフォルトのアクセス権が存在する必要があります。構文 //Atoplevelclass publicclassTopLevelClassTest{ //Classbody} 最上位クラスが private として宣言されている場合、コンパイラはエラーを報告し、「修飾子 private はここでは使用できません。」というプロンプトを表示します。これは、トップレベルのクラスをプライベートにすることはできないことを意味し、保護されたアクセスにも同じことが当てはまります。

See all articles