PHP OOP Programlama - Nasıl Uygulayabilirsiniz

1 Cevap

Merhaba ben uzakta prosedürel programlama taşımak için çalışıyor ve aynı zamanda tasarım desenleri daha iyi takdir ediyorum. Ben Tasarım Deseni en iyi aşağıdaki kodu temsil edebilir ne bilmek istiyorum. Bu temelde günün saatine göre bir değer verir bir if else bulunuyor. Bu birkaç sadece bir örnek, if / else I kodu var deyimi varsa. Hangi OOP Desen uygun (Iterator, Singleton, Fabrika ..)?

if($dayval == "Sun" && $date >= 0 && $date < 18) {
    $timemax = 18;
    $timeleft = ($timemax - $date);
    if($timeleft == 1) {
        $arr = array('tstatus' => 'Trading begins today at 6:00pm (less than '. $timeleft. ' hour to go) -  have a great trade week!',
                     'tcode'   => 'closed');                         
    }
    else {
        $arr = array('tstatus' => 'Trading begins today at 6:00pm (less than ' .$timeleft. ' hours to go) -  have a great trade week!',
                     'tcode'   => 'closed'                       
        );          
    }
    echo json_encode($arr);
}

else if($dayval == "Sun" && $date >= 18 && $date < 19) {
    $timemax = 19;
    $timeleft = ($timemax - $date);
    if($timeleft == 1) {
        $arr = array('tstatus' => 'Asian Market opening in less than ' .$timeleft. ' hour',
                     'tcode'   => 'closed');                         
    }
    else {
        $arr = array('tstatus' => 'Asian Market opening in less than ' .$timeleft. ' hours',
                     'tcode'   => 'closed'                       
        );          
    }
    echo json_encode($arr);

1 Cevap

Eğer herhangi bir özel tasarım deseni uygulamak zorunda olmadığını bilmiyorum. Eğer çözmeye çalıştığınız belirli bir sorunu varsa, tasarım kalıpları yalnızca kullanılmalıdır, ve tasarım deseni ihtiyacını doldurur. Burada böyle bir sorun olduğunu sanmıyorum - Ben bunu şöyle bırakabilirsiniz durumda kod, çalışıyor varsayalım.

Object Oriented Programlama için everything tasarım desenleri uygulanarak ilgili değil - çok fazla bir kodunuzu hala usul tarzı benzer yazılı olacak, ama etrafında oriented olacak senin nesneler.

O dedi, ben iyileşme biraz oda burada olduğunu düşünüyorum. Sizin tekrar kodu buraya adil biraz sadece yazmak hour / hours. Etmek

Ben daha çok bu gibi bakmak o refactor olacaktır:

$timeleft = ($timemax - $date);
$arr = array('tstatus' => 'Trading begins today at 6:00pm (less than '. $timeleft. ' hour' . ($timeleft == 1) ? '' : 's' . ' to go) -  have a great trade week!',
              'tcode'   => 'closed'                       
    );          

Yalnızca gerektiğinde eğer çok fazla kod çoğaltma olmadan, 's' katacak.