Separation of concerns (SoC)

Според мен това е design принцип, много подобен на Inversion of Control, но в по-общ смисъл. Демек, IoC е по-конкретен само за OOP, SoC e по-общ…

Принцип при който чрез разделяне на функционалността на дадена програма по такъв начин, че отделните и компоненти (класове, пакети, библиотеки…) да са както максимално концентрирани само върху своите задачи и предназначения (single responsibility) и да имат максимално тясна специализация.

„In computer scienceseparation of concerns (SoC) is a design principle for separating a computer program into distinct sections such that each section addresses a separate concern.“

Въпросното „разделяне на задачи“ може да е на различен принцип. Това може да са задачи свързани само с визуалната част на дадената програма, както например HTML и CSS си разделят отговорностите, едното за структурата и семантиката, а другото – за чисто визуалната част на дадената страница. Затова в началото казахме, че „SoC e по-общ“.

Може да е чисто backend разделяне на програмата – един клас да отговаря за валидациите, друг за работа с базата данни…

Или още по-генерално как да се структурира програмата. MVC например е типичен пример за SoC – програмата е разделена на бизнес модел, презентационна част и т.н…

Вашият коментар

Вашият имейл адрес няма да бъде публикуван. Задължителните полета са отбелязани с *