Junior — Middle
102
Доменге бағытталған даму тұжырымдамасын түсіндіре аласыз ба?
AI-дан жауап
sobes.tech AI
Домен-бағытталған жобалау (Domain-Driven Design, DDD) — бұл пәндік саланы терең түсінуге және бағдарламалық қамтамасыз етуді осы саланың моделін айналдыруға бағытталған тәсіл. Негізгі идея — бизнес логиканы көрсететін анық, экспрессивті модель құру, ол кодтың негізі болады.
DDD-да негізгі элементтер бөлінеді:
- Объектілер (Entities) — жүйеге маңызды бірегейлігі бар объектілер.
- Мәндік объектілер (Value Objects) — бірегейлігі жоқ, қасиеттерімен сипатталатын объектілер.
- Агрегаттар (Aggregates) — байланысты объектілер тобы, олар бір бүтін ретінде қарастырылады.
- Репозиторийлер (Repositories) — агрегаттарға қол жеткізу интерфейстері.
- Қызметтер (Services) — нақты объектілерге тиесілі емес операциялар.
Python-да мысал (қарапайым):
from dataclasses import dataclass
@dataclass(frozen=True)
class Money:
amount: float
currency: str
class Account:
def __init__(self, account_id: str, balance: Money):
self.account_id = account_id
self.balance = balance
def deposit(self, money: Money):
if money.currency != self.balance.currency:
raise ValueError("Валюта сәйкессіздігі")
self.balance = Money(self.balance.amount + money.amount, self.balance.currency)
# Аккаунттарға қол жеткізу үшін репозиторий
class AccountRepository:
def __init__(self):
self._storage = {}
def save(self, account: Account):
self._storage[account.account_id] = account
def get(self, account_id: str) -> Account:
return self._storage.get(account_id)
Осылайша, DDD бизнес логиканы көрсететін код құруға көмектеседі және жүйені қолдау мен дамыту процесін жеңілдетеді.