Рубрики
Uncategorized

Модель проектирования PHP-интервью-Стратегическая модель

Автор оригинала: David Wong.

Здравствуйте, насколько я помню, PHP-программист брал интервью у автора серии письменных экзаменационных книг.

135 обновлений на этой неделе (с 11 марта по 3.15, 2019) выглядят следующим образом:

Понедельник: Шаблоны проектирования для PHP Собеседование Экзамены: Заводские шаблоны Среда: Шаблоны проектирования для PHP Экзамены на собеседование: Шаблоны конструкторов Пятница: Модель проектирования PHP-интервью-Стратегическая модель

Я сам загрузил электронную книгу” Пять принципов и 23 шаблона проектирования “В облако Baidu, обратите внимание на общедоступный номер:” Библиотека программирования Рюэйи “Ответ:” 23 Я пришлю его тебе.

Если вам необходимо воспроизвести следующее содержание, пожалуйста, укажите автора и источник.

вводить

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

UML-диаграммы

Объяснять

Абстрактные роли политики: классы политики, обычно реализуемые интерфейсом или абстрактным классом.

Конкретные стратегические роли: обертывание связанных алгоритмов и моделей поведения.

Роль среды: Содержит ссылку на класс политики, который в конечном итоге вызывается для клиента.

Сценарий применения

1. Несколько классов отличаются друг от друга только поведением таблиц. Режим стратегии можно использовать для динамического выбора конкретных действий, которые будут выполняться во время выполнения.

2. В разных ситуациях необходимо использовать разные стратегии (алгоритмы), или стратегии могут быть реализованы другими способами в будущем.

3. Скрывайте детали реализации конкретных стратегий (алгоритмов) для клиентов, и они полностью независимы друг от друга.

Преимущества использования моделей политики

1. Шаблон политики обеспечивает способ управления связанными алгоритмическими семействами. Иерархическая структура классов политик определяет алгоритм или семейство поведения. Правильное использование наследования может перенести общий код в родительский класс, что позволит избежать дублирования кода.

2. Шаблон политики обеспечивает способ замены отношений наследования. Наследование может обрабатывать различные алгоритмы или модели поведения. Если это не шаблон политики, то классы среды, использующие алгоритмы или модели поведения, могут иметь несколько подклассов, каждый из которых обеспечивает другой алгоритм или поведение. Однако пользователь алгоритма или поведения смешивается с алгоритмом или самим поведением. Логика принятия решения о том, какой алгоритм использовать или какое поведение выбрать, смешивается с логикой алгоритма или поведения, так что невозможно развиваться независимо. Наследование делает невозможным динамическое изменение алгоритма или поведения.

3. Использование шаблонов политики позволяет избежать использования нескольких операторов условной передачи. Несколько инструкций по переводу непросто поддерживать. Он сочетает логику того, какой алгоритм или поведение должны быть приняты, с логикой алгоритма или поведения и перечисляет их в инструкции множественной передачи, которая является более примитивной и обратной, чем метод наследования.

Код реализации

php
header("Content-type:text/html;Charset=utf-8");
// Abstract policy interface
abstract class Strategy{
    abstract function wayToSchool();
}
// Specific strategic roles
class BikeStrategy extends Strategy{
    function wayToSchool(){
         Echo goes to school by bike.
    }
}
class BusStrategy extends Strategy{
    function wayToSchool(){
         Echo "go to school by bus";
    }
}
class TaxiStrategy extends Strategy{
    function wayToSchool(){
         Echo "go to school by taxi";
    }
}

// Environmental role
class Context{
    private $strategy;
    // Acquire specific strategies
    function getStrategy($strategyName){
        try{
            $strategyReflection = new ReflectionClass($strategyName);
            $this->strategy = $strategyReflection->newInstance();

        }catch(ReflectionException $e){
             $this->strategy = ""; 
        }       
    }

    function goToSchool(){
        $this->strategy->wayToSchool();
        // var_dump($this->strategy);
    }
}

// test
$context = new Context();
$context->getStrategy("BusStrategy");
$context->goToSchool();
 ?>

Я сам загрузил электронную книгу” Пять принципов и 23 шаблона проектирования “В облако Baidu, обратите внимание на общедоступный номер:” Библиотека программирования Рюэйи “Ответ:” 23 Я пришлю его тебе.

Написанное самим Интервью с PHP-программистом, Написанная Книга тестов и Анализ письменных экзаменационных вопросов для интервью с PHP-программистами Книги были проданы на основных платформах электронной коммерции. Книги в руках, Предложение у меня есть. Дополнительные знания, связанные с PHP, для собеседования и экзаменационные вопросы могут быть связаны с приобретением общедоступного номера: Библиотека программирования Ryueyi

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