2010-06-04 3 views
1

Привет, я пытаюсь отойти от процедурного программирования и в то же время лучше оценить шаблоны проектирования. Я хотел бы знать, какой шаблон проектирования лучше всего представить ниже. Это оператор if else, который в основном выводит значение, основанное на времени суток. Это всего лишь образец нескольких if if else, если у меня есть код. Какой шаблон ООП является подходящим (Iterator, Singleton, Factory ..)?PHP OOP Programming - Как подать заявку

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

ООП не заменяет 'if ... else'. Код, безусловно, может быть улучшен, но как его поместить в ООП зависит от того, как этот фрагмент вписывается в остальную часть вашей системы и как он может быть повторно использован. – deceze

+0

Код будет использоваться только один раз на карте, который в основном отображает индикатор страны. Для этого кода будет сделан аякс-вызов для отображения соответствующего индикатора на основании времени – neitony

ответ

3

Я не знаю, нужно ли применять какой-либо конкретный шаблон дизайна. Шаблоны проектирования следует использовать только в том случае, если у вас есть конкретная проблема, которую вы пытаетесь решить, и шаблон дизайна заполняет ваши потребности. Я не думаю, что у вас есть такая проблема здесь - я предполагаю, что ваш код работает нормально, и в этом случае вы можете оставить его таким образом.

Object Oriented Программирования не о применении шаблонов дизайна для всех - большая части коды все равно будет написано по аналогии с вашим процедурным стилем, но это будет ориентированными вокруг объектов.

Это говорит о том, что здесь есть место для улучшения. Ваш повтор справедливого кода здесь просто для того, чтобы написать час/часов.

Я бы реорганизовать, что выглядеть следующим образом:

$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'      
    );   

Это добавит «S», только если это необходимо, без дублирования кода слишком много.

+0

Спасибо, что многое проясняет, и вы правы. Я могу добавить тернарный условный код. Очень ценю! – neitony

Смежные вопросы