mediator

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

Посредник (Mediator)

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

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

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

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

  1. Интерфейс Mediator - посредник описывающий организацию процесса по обмену информацией между объектами типа Colleague;
  2. Класс ConcreteMediator, реализующий интерфейс Mediator;
  3. Базовый абстрактный класс Colleague - коллега описывающий организацию процесса взаимодействия объектов-коллег с объектом типа Mediator;
  4. Класс ConcreteColleague, реализующий интерфейс Colleague. Каждый объект-коллега знает только об объекте-медиаторе. Все объекты-коллеги обмениваются информацией только через посредника.

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

-- THE END --

Documentation

Overview

Package mediator is an example of the Mediator Pattern.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func СonnectСolleagues

func СonnectСolleagues(farmer *Farmer, cannery *Cannery, shop *Shop)

СonnectСolleagues connects all colleagues.

Types

type Cannery

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

Cannery implements a Cannery colleague.

func (*Cannery) AddMoney

func (c *Cannery) AddMoney(m float64)

AddMoney adds money.

func (*Cannery) GetKetchup

func (c *Cannery) GetKetchup() int

GetKetchup returns ketchup.

func (*Cannery) MakeKetchup

func (c *Cannery) MakeKetchup(tomato int)

MakeKetchup implementation.

func (*Cannery) SetMediator

func (c *Cannery) SetMediator(mediator Mediator)

SetMediator sets mediator.

type ConcreteMediator

type ConcreteMediator struct {
	*Farmer
	*Cannery
	*Shop
}

Тип ConcreteMediator, реализует посредника

func (*ConcreteMediator) Notify

func (m *ConcreteMediator) Notify(msg string)

Notify implementation.

type Farmer

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

Farmer implements a Farmer colleague

func (*Farmer) AddMoney

func (f *Farmer) AddMoney(m float64)

AddMoney adds money.

func (*Farmer) GetTomato

func (f *Farmer) GetTomato() int

GetTomato returns tomatos.

func (*Farmer) GrowTomato

func (f *Farmer) GrowTomato(tomato int)

GrowTomato implementation.

func (*Farmer) SetMediator

func (f *Farmer) SetMediator(mediator Mediator)

SetMediator sets mediator.

type Mediator

type Mediator interface {
	Notify(msg string)
}

Mediator provides a mediator interface.

type Shop

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

Shop implements a Shop colleague.

func (*Shop) AddMoney

func (s *Shop) AddMoney(m float64)

AddMoney adds money.

func (*Shop) GetMoney

func (s *Shop) GetMoney() float64

GetMoney returns money.

func (*Shop) SellKetchup

func (s *Shop) SellKetchup(ketchup int)

SellKetchup converts ketchup to money.

func (*Shop) SetMediator

func (s *Shop) SetMediator(mediator Mediator)

SetMediator sets mediator.

Jump to

Keyboard shortcuts

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