質問
操作中に貼り付けたりコピーしたりせずに、このような「複雑な」オブジェクトを簡単かつ便利に作成するにはどうすればよいですか?
解決策
ファクトリ (関数またはクラス メソッド) を作成します。 ) 新しいオブジェクトを作成します。ファクトリの有用性を理解するには、次の違いを想像してください...
コード:
コードをコピー コードは次のとおりです:
$connection =& new MySqlConnection($user, $password, $database);
コードをコピーします コードは次のとおりです。
$connection =& create_connection(); >
後者 コード スニペットは、データベースに接続する create_connect() ファクトリに焦点を当てています。先ほど述べたように、データベース接続を作成するプロセスは、新しい操作と同様に単純な操作になります。ファクトリ パターンの利点は、オブジェクトの作成にあります。そのタスクは、オブジェクト作成プロセスをカプセル化し、必要な新しいクラスを返すことです。
コードをコピー コードは次のとおりです。 :
// PHP4class Product {
function getList() { $db =& new MysqlConnection(DB_USER, DB_PW, DB_NAME);
//...
}
function getByName($name) { $db =& new MysqlConnection(DB_USER, DB_PW, DB_NAME)
//...
}
//...
}
これはなぜ問題があるのでしょうか? データベース接続パラメータがあまりにも多くの場所で使用される場合、これらのパラメータを一律に定義して値を割り当てることになるのは明らかです。適切:
コードをコピーします コードは次のとおりです:
class Product {function getList() {
$db =& $this->_getConnection();
//...
}
function &_getConnection( ) {
_getConnection() メソッドで新しい MysqlConnection (DB_USER、DB_PW、DB_NAME) を返します。