Más contenido relacionado
Similar a プログラミング社内勉強会 モデルを作ろう (20)
プログラミング社内勉強会 モデルを作ろう
- 10. 10
モデルを作らないと次にこうなる
foreach($materials as $material){
If($material[‘category’] == “vegetable”){
peal($material);
cut($material);
}else if ($material [‘category’] == “meat”){
cut($material);
//調味料を追加
}else if($material [‘category’] == “seasoning”){
measure($material);
}
$prepared_materials[]=$material;
}
boil($prepared_materials);
if文で書いたとこ
ろには、if文で追
加していくしかなく
なっちゃう!
どこに何があるのかわか
らない
わかりづらい
→総崩れ…っ!
- 11. 11
将来的にこうなる。
foreach($materials as $material){
If($material[‘category’] == “vegetable”){
peal($material);
cut($material);
}else if ($material [‘category’] == “meat”){
cut($material);
//調味料を追加
}else if($material [‘category’] == “seasoning”){
measure($material);
//油揚げを追加
}else if($material [‘category’] == “aburaage”){
light_boil($material);
}
//肉と野菜に下味をつける場合
if ($material [‘seasoning’] == “true”){
//肉の場合
if($material[‘category’] ==“meat”){
momikomi($material);
//野菜の場合
}elseif($material[‘category’]==“vegetable”){
seasoning($material);
}
… 悪夢のようなコードが続く。
$prepared_materials[]=$material;
}
boil($prepared_materials);
見づらいし、
変更しづらいよねっ
ダメ。絶対。
- 14. 14
材料を継承して、それぞれの具材にする
Vegetable extends Material{
private boolean $need_seasoning;
…途中省略…
public function preapare(){
peal();
parent::cut();
if($need_seasoning){
seasoning();
}
}
Meatクラス、Seasoningクラスを同じく
作る
foreach($materials as $material){
$prepared_materials[]=
$material->prepare();
}
boil($prepared_materials);
モデル(クラス) 呼び出し側