facade

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: 1 Imported by: 0

README

Фасад (Facade)

Паттерн Facade относится к структурным паттернам уровня объекта.

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

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

В качестве примера можно привести интерфейс автомобиля. Современные автомобили имеют унифицированный интерфейс для водителя, под которым скрывается сложная подсистема. Благодаря применению навороченной электроники, делающей большую часть работы за водителя, тот может с лёгкостью управлять автомобилем, не задумываясь, как там все работает.

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

  1. Класс Facade предоставляющий унифицированный доступ для классов подсистемы;
  2. Класс подсистемы SubSystemA;
  3. Класс подсистемы SubSystemB;
  4. Класс подсистемы SubSystemC.

Заметьте, что фасад не является единственной точкой доступа к подсистеме, он не ограничивает возможности, которые могут понадобиться "продвинутым" пользователям, желающим работать с подсистемой напрямую.

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

-- THE END --

Documentation

Overview

Package facade is an example of the Facade Pattern.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Child

type Child struct {
}

Child implements a subsystem "Child"

func (*Child) Born

func (c *Child) Born() string

Born implementation.

type House

type House struct {
}

House implements a subsystem "House"

func (*House) Build

func (h *House) Build() string

Build implementation.

type Man

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

Man implements man and facade.

func NewMan

func NewMan() *Man

NewMan creates man.

func (*Man) Todo

func (m *Man) Todo() string

Todo returns that man must do.

type Tree

type Tree struct {
}

Tree implements a subsystem "Tree"

func (*Tree) Grow

func (t *Tree) Grow() string

Grow implementation.

Jump to

Keyboard shortcuts

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