Ответы пользователя по тегу Паттерны проектирования
  • Правильно я понял паттерн Command?

    SergeyEgorov
    @SergeyEgorov
    Веб разработчик
    Решил что-ли все шаблоны разом выучить? Суть шаблона команда в том, что внутри может быть инкапсулировано любое поведение, а выполнено оно может быть унифицировано, каким угодно пользователем:

    public interface Command
    {
      void execute();
    }
    
    public class FindUserCommand : Command
    {
      public void execute()
      {
        /// Здесь у нас код, который ищет пользователя
      }
    }
    
    public class DeleteUserCommand : Command
    {
      public void execute()
      {
        /// А здес у нас код, который удаляет пользователя
      }
    }
    
    FindUserCommand findUser = new FindUserCommand();
    DeleteUserCommand deleteUser = new DeleteUserCommand();
    
    /// Поскольку оба этих класса реализуют абстракцию Command
    /// мы можем поместить их экземпляры например в коллекцию
     
    HashSet<Command> commands = new HashSet<Command>();
    commands.Add(findUser);
    commands.Add(deleteUser);
    
    /// И отдать затем эту коллекцию кому-нибудь, кто вообще 
    /// ничего не знает про FindUserCommand и DeleteUserCommand
    /// а знает только про Command. И не смотря на это, этот кто-то
    /// совершенно спокойно может выполнить инкапсулированное 
    /// внутри команд поведение.
    
    foreach(Command command in commands)
    {
      command.execute();
    }
    Ответ написан
    Комментировать
  • Правильно ли реализован паттерн Observer?

    SergeyEgorov
    @SergeyEgorov
    Веб разработчик
    Одну строчку осталось добавить...

    virtual void Notify() {
      for (int i = 0; i < followers.size(); ++i) {
        followers[i].Update();            
      }
    }
    Ответ написан
  • Как и стоит ли учить паттерны на Javascript?

    SergeyEgorov
    @SergeyEgorov
    Веб разработчик
    Есть отличная книга "Javascript. Шаблоны", автор Стоян Стефанов. Продается и на бумаге и в электронном виде.
    Ответ написан
    Комментировать
  • Какие паттерны проектирования реализованы на уровне языка в javascript?

    SergeyEgorov
    @SergeyEgorov
    Веб разработчик
    Есть отличная книга по шаблонам, применимым конкретно при использовании Javascript. Автор Стоян Стефанов, книга так и называется "Javascript. Шаблоны".

    Термин "шаблон" подразумевает одинаковые повторяемые действия, воспроизводимые пользователем при определенном контексте. Например - закрепить сверло в патроне дрели и включить дрель в розетку, прежде чем начать сверлить. Или добавить некий метод к прототипу объекта, чтобы все конструируемые экземпляры унаследовали этот метод.

    Как можно встроить такие шаблоны "в коробку"?
    Ответ написан
    Комментировать
  • Почему используют interface a не abstract class?

    SergeyEgorov
    @SergeyEgorov
    Веб разработчик
    Абстрактный класс может реализовать некое базовое поведение, которое затем унаследуют потомки, а интерфейс это в чистом виде контракт, никакого поведения, только сигнатуры.

    Если никакого базового поведения, которое могли бы использовать потомки нет, то нет смысла и использовать абстрактный класс.
    Ответ написан
    Комментировать