ホームページ  >  記事  >  バックエンド開発  >  純正モデルに関するご質問

純正モデルに関するご質問

WBOY
WBOYオリジナル
2016-06-13 13:33:55973ブラウズ

ファクトリ モードに関する質問
例 #1 ファクトリ メソッドの呼び出し (パラメータ付き)
class Example
{
// パラメータ化されたファクトリ メソッド
public static function Factory( $type)
{
if (include_once 'Drivers/' . $type . '.php') {
$classname = 'Driver_' . $type;
return new $classname;
} else {
throw new Exception ('Driver not found');
}
}
}
?>
上記の方法に従って、ドライバーを動的にロードできます。 Example クラスがデータベース抽象クラスの場合、次のように MySQL および SQLite ドライバー オブジェクトを生成できます:
// MySQL ドライバーをロード
$mysql = Example::factory('MySQL ' );

// SQLite ドライバーをロードします
$sqlite = Example::factory('SQLite');
?>


元のアドレス:
http://www.php.net/manual/zh/ language.oop5.patterns.php


このパターンが何をするのか知りたいです

さらに、これには次の内容が含まれていますファイルのクラス名には「Driver_」という接頭辞を付ける必要があり、非常に不便で制限的ではありませんか。

これはどのようなダイナミクスを実現しますか?

-----解決策---------
Driver_MySQL と Driver_SQLite は同じインターフェイスを実装しています。そうすれば、プログラムはデータベースの種類を気にする必要がなくなり、将来のデータベース システムの置き換えが容易になります (もちろん SQL ステートメントに問題がまだあるかもしれません)
Driver_ がなぜprefix が付いているのは、クラス名が重複することを心配したためか、管理の便宜を図るためこのように設定されています。
------解決策---------
このモードは何をしますか...
抽象型のオブジェクトを作成するとき、ファクトリ パターンはそれを実装するために

ドライバーを使用すると目を引くと思いませんか? $a,$ は変数名です? b,$c 自分が何をしているのか理解できると思いますか?推測すらできないと思います...

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