2016-03-26 3 views
0

私はLaravelを使用してシステムを構築していますが、このシステムは非常に複雑で、他にもたくさん含まれていますので、保守しやすくするためにコードを変更してクリーンアップします。パターンを他のものに変換する

は、私はもちろんそのますます複雑のこの

if(A) 
{ 
    call_a(); 
} 
else 
{ 
    if(B) 
    { 
     call_a(); 
    } 
    else 
    { 
     if() 
     { 
      call_b(); 
     } 
     else 
     { 
      if(C) 
      { 
       call_a(); 
      } 
      else 
      { 
       call_b(); 
      } 
     } 
    } 
} 

のようなものを持っています。

助けが必要ですか? THanks

+1

正確にパターンはここにありますか?あなたは 'switch'を使うことができ、" else "を入力する必要はありません。別のパラメータ' elseif(C){call_a();を使うことができます。 } ' – Qirel

+0

このコードを維持するのは難しいですが、私は自分の問題点のほんの小さな例を書いています。同じ機能を繰り返し呼び出す何百ものものがあります。私は使用できるデザインパターンがあるかどうか疑問です。 – Peril

+0

あなたが探しているものが「スイッチ」かもしれません。あなたは '$ call_A = array(" A "、" B "、" C ")を実行することもできます。 if(in_array($ value、$ call_A){call_a();} ' - 同じことをする多くの方法がありますが、構造のための最も簡単な方法を見つけるだけで、コードの構造を見ることなく – Qirel

答えて

0

私はあなたが探しているものを正確に知っていると思います。私は本当にRedditの上webstrousによってthis postのような:

今について多型を学ぶ時間です。

PHPでオブジェクト指向の 開発を行っていた場合は、投稿に指定していません。あなたがそうでないなら、ifと ケースステートメントで悩んでいますが、もしそうなら、あなたは運がいいです。 多型 は、部分的に、 が記述しているコードの種類を無くすことを助けるために発明されたものです。 - 無期限に長い条件文のリスト

基本的な考え方は、あなたのケースでは、あなたはどんな行動 が より良いクラスとそのサブクラスの中にカプセル化することができる、いくつかの変数の値に依存する、記述しようとしているということです。 アプリケーションの観点から見ると、そのクラスのすべてのインスタンスは と同じですが、内部的にはそれぞれのオブジェクトが異なる ソリューションを実装します。

PHPでの継承の簡単な例がありますが、具体的な状況によっては、 に応じて、他の多態性の方が良いかもしれません。

これについて少し読むのは良いことです。コードについてはあまり考えないでください。 多態性はすべてのオブジェクト指向の 言語に存在し、あなたは自分自身に挑戦して の概念を理解する方が良い。個人的には、 のJavaScriptデザインパターンを読むのに多くの時間を費やしていますが、これは現在私のドメインだからですが、 という人がいるかもしれません。

関連する問題