製品を掲載したウェブサイトがあるとしましょう。Product::getProducts
製品の配列を返すメソッドがあります。
それからマネージャーが私たちのところに来て言った:私たちはサイトでプロモーション(割引、販売)をしたい。各プロモーションには商品が添付されます。メソッドを書きましたAction::getProductsByActionId(actionId)
それからマネージャーがまた来て、商品が付いている記事がもっと必要だと言いました。メソッドを追加しましょうArticle::getProductsByArticleId(arcticleId)
。
あなたが言う-パラメータを使って1つのメソッドを作りましょう。わかりました、それについて説明します。
そして注意:マネージャーが私たちのところに来て言った-私たちはサイト上の製品を無効にできるようにしたいのです。それら。値true / falseを持つ製品のアクティブフラグを追加する必要があります。偽のフラグが付いた製品は、サイトに表示しないでください。
結論:コード内で製品を取得するすべての場所を見つけ、どこにでもロジックを追加して、active = trueフラグを持つ製品のみが返されるようにする必要があります。それら。3つの方法を修正する必要があります。
Product::getProducts,
Action::getProductsByActionId(actionId),
Article::getProductsByArticleId(arcticleId)
間違った場所でコードを修正する必要があるという事実は、重大なエラーです-ある場所では、修正するのを忘れていました。

さて、商品を入手できる場所が1つだけになるようにしましょう。そうすれば、そのようなエラーは発生しません。
: , : Product::getProducts(actionId = null, articleId = null)
. , Product::getProducts
, articleId, Action::getProductsByActionId(actionId)
, ..
, , .. .
: . . , , Store::getProducts
— - , . - Product::getProducts
. ( , , - - ), - .
: : , active. . . 1 — Product::getProducts
active=true.
. — . 1 , — . . , Product::getProducts
-, active . 1 .

1 — , — . — -, - . . , — .
UPD:
, 1 : Product::getProducts, Product::getProductsV2, Product::getProducts , , , .
: , 1 private Product::getProducts. public , , .. - Product::getProductsForCatalog, - Product::getProductsForAction, : Product::getProductsForArticles, Product::getProductsForStore .. - 1 , 1 . 1 ( ), .