Դուք ունե՞ք հեքսագոնալ ճարտարապետության օգտագործմամբ ծրագրեր մշակելու կամ կիրառելու փորձ։
sobes.tech AI
Պատասխան AI-ից
Հեքսագոնալ ճարտարապետությունը (Hexagonal Architecture), որը նաև հայտնի է որպես պորտերի և ադապտերների ճարտարապետություն, նպատակ ունի առևտրային տրամաբանությունը առանձնացնել արտաքին համակարգերից և ենթակառուցվածքից:
Իմ փորձով Go-ով զարգացման ժամանակ, ես կիրառել եմ այս մոտեցումը՝ մոդուլային և հեշտորեն թեստավորվող հավելվածներ ստեղծելու համար: Հիմնական գաղափարը՝ առանձնացնել հավելվածի միջուկը (բիզնես տրամաբանությունը) և շփվել արտաքին աշխարհի հետ պորտեր (ինտերֆեյսներ) միջոցով, որոնք իրականացնում են ադապտերներ (օրինակ՝ տվյալների բազաներ, վեբ ծառայություններ, UI):
Կառուցվածքի օրինակ՝
- Core (դոմեն): բիզնես տրամաբանություն, պորտերի ինտերֆեյսներ
- Ադապտերներ: պորտերի իրականացմանները (պահոցներ, API, UI)
- Դիմում: կապում է միջուկը ադապտերների հետ
Այս մոտեցումը հեշտացնում է թեստավորումը, կոմպոնենտների փոխարինումը և պահպանում է կոդի մաքուրությունը: Go-ում դա հեշտությամբ իրականացնում է ինտերֆեյսների և կոմպոզիցիայի միջոցով:
Նմուշ՝ պորտի և ադապտերի ինտերֆեյս:
// Պորտ
type UserRepository interface {
GetUser(id string) (*User, error)
}
// Ադապտեր
type PostgresUserRepo struct {
db *sql.DB
}
func (r *PostgresUserRepo) GetUser(id string) (*User, error) {
// տվյալների բազայի մուտքի իրականացում
}
Այսպիսով, բիզնես տրամաբանությունը կախված է միայն ինտերֆեյսներից, իսկ կոնկրետ իրականացումները կարող են փոխվել առանց միջուկին ազդելու: