ホームページ >バックエンド開発 >PHPチュートリアル >PHP_PHPチュートリアルの簡単なファクトリパターンの例説明

PHP_PHPチュートリアルの簡単なファクトリパターンの例説明

WBOY
WBOYオリジナル
2016-07-20 11:10:54800ブラウズ

PHPでの簡単なファクトリパターンのサンプル解説が簡単に参照できます。

単純なファクトリ パターン:
①抽象基本クラス: サブクラスに実装するいくつかの抽象メソッドをクラス内で定義します
②抽象基本クラスから継承するサブクラス: 基本クラスに抽象メソッドを実装します
③ファクトリ クラス: オブジェクトのインスタンス化に使用されます

読んだあと記事を読んでからこの写真を見返すと、効果がさらに高まります

カプセル化メソッドを使用してください

コードは次のとおりです コードをコピーします
試してみましょう {
result=0; $result= if ($num2= =0) {
新しい例外をスローします( "result = $ num1/$ num2;
。 ;calculate(2,3,'+');//印刷: 5
echo $test->calculate(5,0,' /');//印刷: エラーを入力しました: 除数を 0 にすることはできません
?>


利点: 上記のコードはオブジェクト指向のカプセル化機能を使用しています。 include クラスがある限り、他のページはそれを自由に使用できます。

欠点: 柔軟に拡張および保守することができません。 "remainder" 操作、switch ステートメント ブロックに分岐ステートメントを追加する必要があります。 コードを次のように変更する必要があります
分岐ステートメントを追加します

コードは次のとおりです コードをコピーします <?php
class calc {
パブリック関数計算($ num1、$ num2、$ operator){
ケース '%':
num1%$ $ num2;何か間違ったものが入力されました:「.$e->getMessage();

コード分析: 上記の方法を使用して電卓に新しい関数演算を追加すると、次のような欠点があります

① 元のコードブロックを変更する必要がある 「新しい関数を追加」するには、元のコードを変更する必要がある場合があります。元のコードの修正には注意してください
② 「べき乗」、「平方根」、「対数」、「三角関数」、「統計」などの関数を多数追加する場合、またはプログラマー向けの特殊な関数を追加する場合And、Or、Not、Xor などの計算関数では、switch ステートメントに N 個の分岐ステートメントを追加する必要があります。計算関数に 20 または 30 の case 分岐ステートメントがある場合、コードが 1 画面を超えることを想像してください。コードの可読性が大幅に低下するだけでなく、小さな関数を追加するには、関連しない他の関数も追加する必要があります。これにより、プログラムの実行効率が大幅に減少します。 class OperationAdd extends Operation {
public function getValue($num1, $num2) class OperationAdd public function getValue( ub extends Operation { F PUBLIC FUNCTION GETVALUE ($ Num1, $ Num2) {
Return $ NUM1-$ Num2}} / **
* 操作クラス

* 抽象メソッドが含まれるため、クラスは抽象クラスとして宣言する必要があります * / 0){ }catch (Exception $e)} echo "エラー メッセージ: ".$e- >getMessage();

ここではオブジェクト指向の継承機能が採用されています。まず、仮想基本クラスを宣言し、サブクラスがその基本クラスで実装する必要があるメソッド (getValue()) を指定します。

分析: オブジェクト指向の継承機能を使用します。元のプログラムは、「べき乗」、「平方根」、「対数」、「三角関数」、「統計」などに拡張できます。

余りを求めます

Function GetValue ($ Num1, $ NUM2) { try {を使用して を使用して を使用して を使用して を使用して を使用して を使用を通じて ' を通じて ' を通じて‐ to ‐ ‐‐‐‐ ‐ throw new Exception("除数を 0 にすることはできません");
ファクトリクラス
コードは以下の通りです コードをコピー

/**
* 余り(余り)を求めます
*
*/
class OperationRem extends Operation {
public function getValue($num1 ,$num 2) {
結合度を大幅に低下させるこれにより、将来のメンテナンスと拡張が容易になります

未解決の問題がまだあります。それは、オペレーターに従ってプログラムに対応するオブジェクトをインスタンス化させる方法です。ユーザーによる入力?
解決策: インスタンス化プロセスを実装するには別のクラスを使用します。このクラスはファクトリです。

コードは次のとおりです


コードをコピーします

< ;?php /* *** return new OperationSub(); ; y::createObj('/'); $result=$test->getValue(23,0);?>
echo $result;



www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/444687.html技術記事 PHPでの簡単なファクトリパターンのサンプル解説が簡単に参照できます。 シンプルなファクトリパターン: ①抽象基本クラス: クラス内にいくつかの抽象メソッドを定義し、サブクラスに実装します...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。