7 најважнијих образаца дизајна софтвера

За свеобухватно дубоко залажење у тему Обликовања софтверског дизајна, потражите обрасце дизајна софтвера: Најбоље праксе за програмере, креирао Ц.Х. Афзал, ветеран софтверски инжењер са вишегодишњим искуством у Нетфлику, Мицрософту и Орацлеу. Много нижег износа сажето је из његовог курса.

Зашто дизајнирати обрасце?

Обрасци дизајна постали су предмет неке контроверзе у свету програмирања у последње време, највећим делом због перципиране „прекомерне употребе“ која доводи до кода који је теже разумети и управљати.

Важно је схватити да обрасци дизајна никада нису имали за циљ да се хакују заједно пречице да би се примијенили на несретан начин "једна величина - све" за ваш код. У коначници, нема могућности замене за истинску способност решавања проблема у инжењерству софтвера.

Чињеница је, међутим, да обрасци дизајна могу бити невероватно корисни ако се користе у правим ситуацијама и из правих разлога. Када се стратешки користе, програмер могу учинити знатно ефикаснијим тако што ће им дозволити да избегну измислити преговорни точак, уместо да користе методе које су други већ прецизирали. Они такође нуде користан заједнички језик за концептуализирање поновљених проблема и решења приликом разговора с другима или управљања кодом у већим тимовима.

Као што је речено, важно упозорење је осигурати да програмер схвата како и зашто иза сваког узорка.

Без додатног обожавања (у општем редоследу важности, од најмање најмање):

Најважнији обрасци дизајна

  1. Синглетон

Синглетон узорак користи се за ограничавање стварања класе на само један објект. То је корисно када је за координирање акција у систему потребан један (и само један) објект. Неколико је примера где треба да постоји само једна инстанца класе, укључујући кеше, полове нити и регистре.

Тривијално је покренути објект класе - али како осигурати да се икада створи само један објект? Одговор је да конструктор постане „приватан“ класи коју намеравамо да дефинишемо као синглтон. На тај начин само чланови класе могу приступити приватном конструктору и ником другом.

Важно разматрање: Могуће је подкласирати једнотонско дејство ако конструктор буде заштићен уместо приватног. То би могло бити прикладно у неким околностима. Један приступ кориштен у овим сценаријима је креирање регистра синглтона поткласа и метода гетИнстанце може узети параметар или користити променљиву околину да врати жељени синглтон. Тада регистар одржава мапирање имена стрингова у синглетон објекте, којима се може приступити по потреби.

2. Фабричка метода

Нормална фабрика производи робу; фабрика софтвера производи предмете. И не само то - то се чини без навођења тачне класе објекта који ће се створити. Да би се ово постигло, објекти се креирају позивањем фабричке методе уместо позивања конструктора.

Стварање предмета на Јави обично се одвија овако:

СомеЦласс сомеЦлассОбјецт = нови СомеЦласс ();

Проблем са горе наведеним приступом је у томе што код који користи објект СомеЦласс, одједном постаје овисан о конкретној имплементацији СомеЦласс-а. Ништа лоше није у кориштењу нових за стварање предмета, али долази с пртљагом чврсто повезаности нашег кода с конкретном класом за имплементацију, што понекад може бити проблематично.

3. Стратегија

Узорак стратегије омогућава групирање повезаних алгоритама под апстракцијом, што омогућава искључивање једног алгоритма или политике за другим без модификације клијента. Уместо да директно имплементира један алгоритам, код добија инструкције за време извршавања које одређују коју од група алгоритама треба покренути.

4. Посматрач

Овај образац представља зависност између многих објеката тако да када један објект промени стање, обавештавају се сви његови зависници. То се обично ради позивањем једне од њихових метода.

Ради једноставности, размислите шта ће се догодити када пратите некога на Твиттеру. Ви у основи тражите да Твиттер пошаље вама (посматрачу) твит ажурирања особе (теме) коју сте пратили. Образац се састоји од два актера, посматрача који су заинтересовани за ажурирања и субјекта који генерише ажурирања.

Субјект може имати много посматрача и однос је један према многима. Међутим, посматрач је слободан да се претплати на ажурирања и од других субјеката. На феед вести можете да се претплатите са Фацебоок странице, која би била тема, а кад год страница има нови пост, претплатник ће видети нови пост.

Кључно разматрање: У случају многих субјеката и неколико посматрача, ако сваки субјект похрани своје посматраче одвојено, повећаће трошкове складиштења јер ће неки субјекти више пута складиштити истог посматрача.

5. Буилдер

Као што име говори, за израду објеката користи се образац градитеља. Понекад објекти које стварамо могу бити сложени, сачињени од више под-објеката или захтевати сложени процес изградње. Вежба креирања сложених типова може се поједноставити коришћењем шема градитеља. Композитни или збирни објект је оно што градитељ углавном гради.

Кључно разматрање: Образац градитеља може се чинити сличним 'апстрактном фабричком' обрасцу, али једна је разлика што градитељ узорак креира објект корак по корак, док апстрактни фабрички узорак враћа објект у једном потезу.

6. Адаптер

То омогућава неспојивим класама да раде заједно претварањем интерфејса једне класе у другу. Замислите то као неку врсту преводиоца: када се састају две шефице држава које не говоре заједничким језиком, обично преводилац седи између њих двоје и преводи разговор, омогућавајући тако комуникацију.

Ако имате две апликације, а једна испљува као КСМЛ, а друга захтева ЈСОН улаз, требаће вам адаптер између њих да би неометано функционисали.

7. Држава

Образац стања обухвата различита стања у којима се може налазити машина и омогућава објекту да измени своје понашање када се његово унутрашње стање промени. Машина или контекст, како се назива образац-узорак, могу на њему да предузму радње које га покрећу у различита стања. Без употребе узорка, код постаје нефлексибилан и препун иф-елсе условом.

Желите да наставите да учите?

Са моделима дизајна софтвера: Најбоље праксе за програмере имат ћете прилику учинити више од само прочитати теорију. Моћи ћете да уђете дубоко у стварне проблеме и разумете практична решења са примерима из стварног живота.

Курс се заснива на популарној књизи Ганг оф Фоур, али представљеној у интерактивном, лако пробављивом формату. Интерактивно ћете савладати 23 позната дизајна из књиге, научити правилне примене 3 кључна типа дизајна (креативни, структурални и бихевиорални) и научити да уградите ове обрасце дизајна у сопствене пројекте.

Погледајте сада.

Оригинално објављено на блог.едуцативе.ио 7. новембра 2018. године.