ホームページ > バックエンド開発 > PHPチュートリアル > 卒業プロジェクト ppt 形式では、PHP デザイン パターンにファクトリー パターンが導入されています

卒業プロジェクト ppt 形式では、PHP デザイン パターンにファクトリー パターンが導入されています

WBOY
リリース: 2016-07-29 08:38:10
オリジナル
1293 人が閲覧しました

質問
このような「複雑な」オブジェクトを、貼り付けたりコピーせずに簡単かつ便利に作成するにはどうすればよいですか?
解決策
新しいオブジェクトを作成するためのファクトリ (関数またはクラス メソッド) を作成します。ファクトリの有用性を理解するには、以下の違いを想像してください...
コード:

コードをコピー コードは次のとおりです:


$connection =& new MySqlConnection($user, $password, $database );


...コードを拡張可能にしてより簡潔にします...

コードをコピーします コードは次のとおりです:


$connection =& create_connection();


スニペットはデータベースへの接続に焦点を当てています。 先ほど述べたように、create_connect() ファクトリは、新しい操作と同様に、データベース接続を作成するプロセスを単純な操作にします。ファクトリ パターンの利点は、オブジェクトの作成にあります。そのタスクは、オブジェクト作成プロセスをカプセル化し、必要な新しいクラスを返すことです。
オブジェクトの構造とオブジェクトの作成方法を変更したい場合は、オブジェクト ファクトリを選択し、コードを 1 回変更するだけで済みます。 (ファクトリ パターンの機能は非常に強力で、アプリケーションの下部にあるため、今後も他の多くの複雑なパターンやアプリケーションに登場します。)
サンプル コード
ファクトリ パターンは、オブジェクト作成プロセスをカプセル化します。オブジェクト自体にオブジェクト ファクトリを作成するか、特定のアプリケーションに応じて追加のファクトリ クラスを作成できます。ファクトリ オブジェクトの例を見てみましょう。
次のコードでは、データベース接続部分が繰り返し出現していることがわかりました:

コードをコピーします コードは次のとおりです:


// PHP4
class Product {
function getList() { $db = & new MysqlConnection(DB_USER , DB_PW, DB_NAME);
//...
}
function getByName($name) { $db =& new MysqlConnection(DB_USER, DB_PW, DB_NAME)
}
//...
}

これはなぜ良くないのでしょうか? データベース接続パラメータがあまりにも多くの場所に出現します。これらのパラメータを定数として設定すると、それらのパラメータを一律に定義して値を割り当てることになります。はあまり適切ではありません:

データベースに接続するためのパラメーターは簡単に変更できますが、すべての接続コードを変更しない限り、これらのパラメーターの順序を増やしたり変更したりすることはできません。
PostgresqlConnection など、別のデータベースに接続するための新しいクラスを簡単にインスタンス化することはできません。
これにより、接続オブジェクトのみのステータスをテストして検証することが困難になります。
ファクトリーデザインパターンを使用すると、コードは大幅に改善されます:

コードをコピーします コードは次のとおりです:

class Product {
function getList() {
$db =& $this-> ;_getConnection() ;
//...
}
function &_getConnection() {
return new MysqlConnection(DB_USER, DB_PW, DB_NAME)
}
}

new MysqlConnection(DB_USER, DB_PW, DB_NAME); ) メソッドは _getConnection() メソッドに集中しました。


以上、卒業制作ppt形式の紹介と、PHPデザインモードのファクトリーモードについて紹介しましたが、卒業制作ppt形式の内容も含めて、PHPチュートリアルに興味のある友人の参考になれば幸いです。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート