command

package
v0.0.0-...-6db54d9 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 15, 2021 License: MIT Imports: 0 Imported by: 0

README

Команда (Command)

Паттерн Command относится к поведенческим паттернам уровня объекта.

Паттерн Command позволяет представить запрос в виде объекта. Из этого следует, что команда - это объект. Такие запросы, например, можно ставить в очередь, отменять или возобновлять.

В этом паттерне мы оперируем следующими понятиями: Command - запрос в виде объекта на выполнение; Receiver - объект-получатель запроса, который будет обрабатывать нашу команду; Invoker - объект-инициатор запроса.

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

Требуется для реализации:

  1. Базовый абстрактный класс Command описывающий интерфейс команды;
  2. Класс ConcreteCommand, реализующий команду;
  3. Класс Invoker, реализующий инициатора, записывающий команду и провоцирующий её выполнение;
  4. Класс Receiver, реализующий получателя и имеющий набор действий, которые команда можем запрашивать;

Invoker умеет складывать команды в стопку и инициировать их выполнение по какому-то событию. Обратившись к Invoker можно отменить команду, пока та не выполнена.

ConcreteCommand содержит в себе запросы к Receiver, которые тот должен выполнять. В свою очередь Receiver содержит только набор действий (Actions), которые выполняются при обращении к ним из ConcreteCommand.

[!] В описании паттерна применяются общие понятия, такие как Класс, Объект, Абстрактный класс. Применимо к языку Go, это Пользовательский Тип, Значение этого Типа и Интерфейс. Также в языке Go за место общепринятого наследования используется агрегирование и встраивание.

-- THE END --

Documentation

Overview

Package command is an example of the Command Pattern.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Command

type Command interface {
	Execute() string
}

Command provides a command interface.

type Invoker

type Invoker struct {
	// contains filtered or unexported fields
}

Invoker implementation.

func (*Invoker) Execute

func (i *Invoker) Execute() string

Execute all commands.

func (*Invoker) StoreCommand

func (i *Invoker) StoreCommand(command Command)

StoreCommand adds command.

func (*Invoker) UnStoreCommand

func (i *Invoker) UnStoreCommand()

UnStoreCommand removes command.

type Receiver

type Receiver struct {
}

Receiver implementation.

func (*Receiver) ToggleOff

func (r *Receiver) ToggleOff() string

ToggleOff implementation.

func (*Receiver) ToggleOn

func (r *Receiver) ToggleOn() string

ToggleOn implementation.

type ToggleOffCommand

type ToggleOffCommand struct {
	// contains filtered or unexported fields
}

ToggleOffCommand implements the Command interface.

func (*ToggleOffCommand) Execute

func (c *ToggleOffCommand) Execute() string

Execute command.

type ToggleOnCommand

type ToggleOnCommand struct {
	// contains filtered or unexported fields
}

ToggleOnCommand implements the Command interface.

func (*ToggleOnCommand) Execute

func (c *ToggleOnCommand) Execute() string

Execute command.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL