🔹 Peer-to-Peer
🔹 API Gateway
🔹 Pub-Sub
🔹 Request-Response
🔹 Event Sourcing
🔹 ETL
🔹 Batching
🔹 Streaming Processing
🔹 Orchestration
👉 Источник
#инфографика
Pattern Guru - это Telegram-канал, посвященный паттернам программирования, архитектуре программного обеспечения и микросервисам. Если вы хотите углубить свои знания в области разработки программного обеспечения и узнать о передовых технологиях, то этот канал для вас.
Шаблоны проектирования играют важную роль в создании эффективного и масштабируемого ПО. Архитектура ПО определяет основные принципы и структуру системы, влияя на ее производительность и надежность. Микросервисы - это подход к разработке ПО, который позволяет создавать независимые и легко масштабируемые компоненты.
Присоединяйтесь к каналу Pattern Guru, чтобы узнать о последних тенденциях в мире разработки программного обеспечения и стать настоящим гуру в этой области. Следите за обновлениями и общайтесь с единомышленниками, чтобы обогатить свои знания и навыки в IT-сфере. Присоединяйтесь к нам прямо сейчас!
13 Dec, 05:20
12 Dec, 16:30
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
12 Dec, 11:15
03 Dec, 10:30
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
02 Dec, 13:15
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
22 Nov, 08:12
21 Nov, 18:02
21 Nov, 10:50
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
19 Nov, 13:15
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
17 Nov, 17:33
17 Nov, 09:00
13 Nov, 16:10
13 Nov, 12:10
31 Oct, 14:39
30 Oct, 14:48
class AbstractFactory(ABC):
@abstractmethod
def create_product_a(self):
...
@abstractmethod
def create_product_b(self):
...
class ConcreteFactory1(AbstractFactory):
def create_product_a(self):
return ConcreteProductA1()
def create_product_b(self):
return ConcreteProductB1()
class ConcreteFactory2(AbstractFactory):
def create_product_a(self):
return ConcreteProductA2()
def create_product_b(self):
return ConcreteProductB2()
class AbstractProductA(ABC):
@abstractmethod
def very_important_super_function_a(self) -> str:
...
class AbstractProductB(ABC):
@abstractmethod
def very_important_super_function_b(self) -> str:
...
class ConcreteProductA1(AbstractProductA):
def very_important_super_function_a(self) -> str:
return "Product A1"
class ConcreteProductA2(AbstractProductA):
def very_important_super_function_a(self) -> str:
return "Product A2"
class ConcreteProductB1(AbstractProductB):
def very_important_super_function_b(self) -> str:
return "Product B1"
class ConcreteProductB2(AbstractProductB):
def very_important_super_function_b(self) -> str:
return "Product B2"
def client(factory: AbstractFactory) -> str:
return factory.create_product_a().very_important_super_function_a()
for factory in (ConcreteFactory1, ConcreteFactory2, ...):
client(factory)
30 Oct, 10:46
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
30 Oct, 10:07
25 Oct, 17:37
adapter = Adapter()
result = adapter.do() + "5"
class Test1:
def do(self) -> str:
return "3"
class Test2:
def specific_do(self) -> float:
return 3.4
class Adapter(Test1, Test2):
def do(self) -> str:
return f"Translated: {round(self.specific_do())}"
25 Oct, 13:30
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
23 Oct, 09:43
22 Oct, 13:00
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
22 Oct, 12:59
from __future__ import annotations
from abc import ABC, abstractmethod
class Creator(ABC):
"""
Класс Создатель объявляет фабричный метод, который должен возвращать объект
класса Продукт. Подклассы Создателя обычно предоставляют реализацию этого
метода.
"""
@abstractmethod
def factory_method(self):
"""
Обратите внимание, что Создатель может также обеспечить реализацию
фабричного метода по умолчанию.
"""
pass
def some_operation(self) -> str:
"""
Также заметьте, что, несмотря на название, основная обязанность
Создателя не заключается в создании продуктов. Обычно он содержит
некоторую базовую бизнес-логику, которая основана на объектах Продуктов,
возвращаемых фабричным методом. Подклассы могут косвенно изменять эту
бизнес-логику, переопределяя фабричный метод и возвращая из него другой
тип продукта.
"""
# Вызываем фабричный метод, чтобы получить объект-продукт.
product = self.factory_method()
# Далее, работаем с этим продуктом.
result = f"Creator: The same creator's code has just worked with {product.operation()}"
return result
"""
Конкретные Создатели переопределяют фабричный метод для того, чтобы изменить тип
результирующего продукта.
"""
class ConcreteCreator1(Creator):
"""
Обратите внимание, что сигнатура метода по-прежнему использует тип
абстрактного продукта, хотя фактически из метода возвращается конкретный
продукт. Таким образом, Создатель может оставаться независимым от конкретных
классов продуктов.
"""
def factory_method(self) -> Product:
return ConcreteProduct1()
class ConcreteCreator2(Creator):
def factory_method(self) -> Product:
return ConcreteProduct2()
class Product(ABC):
"""
Интерфейс Продукта объявляет операции, которые должны выполнять все
конкретные продукты.
"""
@abstractmethod
def operation(self) -> str:
pass
"""
Конкретные Продукты предоставляют различные реализации интерфейса Продукта.
"""
class ConcreteProduct1(Product):
def operation(self) -> str:
return "{Result of the ConcreteProduct1}"
class ConcreteProduct2(Product):
def operation(self) -> str:
return "{Result of the ConcreteProduct2}"
def client_code(creator: Creator) -> None:
"""
Клиентский код работает с экземпляром конкретного создателя, хотя и через
его базовый интерфейс. Пока клиент продолжает работать с создателем через
базовый интерфейс, вы можете передать ему любой подкласс создателя.
"""
print(f"Client: I'm not aware of the creator's class, but it still works.\n"
f"{creator.some_operation()}", end="")
if __name__ == "__main__":
print("App: Launched with the ConcreteCreator1.")
client_code(ConcreteCreator1())
print("\n")
print("App: Launched with the ConcreteCreator2.")
client_code(ConcreteCreator2())
15 Oct, 12:15
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
14 Oct, 10:45
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
01 Oct, 10:33
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
30 Sep, 09:08
24 Sep, 12:15
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
16 Sep, 09:04
14 Aug, 14:22
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
01 Aug, 17:24
function User(name) {
this.name = name,
this.print = () => console.log(this.name)
}
const jane = new User ('Jane Doe')
jane.print() // 'Jane Doe'
function DecorateWithCity(user, city) {
user.city = city
user.print = function() {
console.log (${this.name} from ${this.city})
}
}
DecorateWithCity(jane, 'NewYork')
jane.print(); //'Jane Doe from New York'
#interview 01 Aug, 13:23
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
01 Aug, 12:03
18 Jul, 13:43
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
17 Jul, 17:19
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576