0

手続き型の php プロジェクトを OOP に変換しています。私は1つの問題に固執しました。テーブルデータを取得する最良の方法は何ですか?

コンストラクタでIDを渡す

new Rate(new Currency($currencyId), $amount);

または、最初に id を設定して getId() メソッドを呼び出しますか?

$currency = (new Currency())->setId($currencyId);
new Rate($currency->getId(), $amount)
4

3 に答える 3

2

Rateオブジェクトは何が何であるかを気にするべきで$currencyIdはなく、知っておくべき唯一のことは通貨があるということです:

$rate = new Rate(new Currency($currencyId), $amount);

Currencyあまりにも多くのオブジェクトがインスタンス化されるのを防ぎたい場合は、マッパーを導入できます。

$mapper = new CurrencyMapper();
$rate = new Rate($mapper->getCurrencyWithId($currencyId), $amount);

これを行う場合、 Flyweightの規則に従って、すべてのオブジェクトが不変でなければならないことに注意してください。

于 2013-07-05T07:55:35.023 に答える
1

OOP 設計について質問すると、100 通りの回答が得られます。同じことを実現するさまざまな設計パターンが多数あります。

あなたの完全なデザインが見えないので、言うのは難しいですが、あなたの2つの例を考えると、最初のものを使います.

于 2013-07-05T05:56:40.483 に答える
0

Just from the viewpoint of readability and the number of calls made I'd go with the first one. The second one makes two separate calls (one to the constructor and another one to set $currencyId).

于 2013-07-05T07:48:15.890 に答える