strategy

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

Стратегия (Strategy)

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

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

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

  1. Класс Context, представляющий собой контекст выполнения той или иной стратегии;
  2. Абстрактный класс Strategy, определяющий интерфейс различных стратегий;
  3. Класс ConcreteStrategyA, реализует одну из стратегий представляющую собой алгоритмы, направленные на достижение определенной цели;
  4. Класс ConcreteStrategyB, реализует одно из стратегий представляющую собой алгоритмы, направленные на достижение определенной цели.

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

-- THE END --

Documentation

Overview

Package strategy is an example of the Strategy Pattern.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type BubbleSort

type BubbleSort struct {
}

BubbleSort implements bubble sort algorithm.

func (*BubbleSort) Sort

func (s *BubbleSort) Sort(a []int)

Sort sorts data.

type Context

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

Context provides a context for execution of a strategy.

func (*Context) Algorithm

func (c *Context) Algorithm(a StrategySort)

Algorithm replaces strategies.

func (*Context) Sort

func (c *Context) Sort(s []int)

Sort sorts data according to the chosen strategy.

type InsertionSort

type InsertionSort struct {
}

InsertionSort implements insertion sort algorithm.

func (*InsertionSort) Sort

func (s *InsertionSort) Sort(a []int)

Sort sorts data.

type StrategySort

type StrategySort interface {
	Sort([]int)
}

StrategySort provides an interface for sort algorithms.

Jump to

Keyboard shortcuts

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