GRASP

From Wikipedia, the free encyclopedia

Remove ads

GRASP (англ.: general responsibility assignment software patterns — агульныя шаблоны размеркавання адказнасцей; таксама існуе англійскае слова «grasp» — «кантроль, хватка») — шаблоны, якія выкарыстоўваюцца ў аб’ектна-арыентаваным праектаванні для вырашэння агульных задач па прызначэнню адказнасцей класам і аб’ектам.

У кнізе Крэга Лармана «Ужыванне UML і шаблонаў праектавання» 9 такіх шаблонаў: кожны дапамагае вырашыць нейкую праблему, якая ўзнікае як у аб’ектна-арыентаваным аналізе, гэтак і ў практычна ўсякім праекце па распрацоўцы праграмнага забеспячэння.[1] Такім чынам, шаблоны «G.R.A.S.P.» — добра дакументаваныя, стандартызаваныя і правераныя часам прынцыпы аб’ектна-арыентаванага аналізу, а не спроба прыўнесці нешта прынцыпова новае.

Remove ads

Каталог шаблонаў

Сціслая характарыстыка дзевяці шаблонаў:

1. Інфармацыйны эксперт (Information Expert)

Шаблон вызначае базавы прынцып размеркавання адказнасцей:

Адказнасць мае быць прызначана таму, хто валодае максімумам патрэбнай інфармацыі для выканання — інфармацыйнаму эксперту.

Гэты шаблон — самы яскравы і важны з дзевяці. Калі яго не ўлічыць — атрымаецца спагеці-код, у якім цяжка разабрацца.

Лакалізацыя ж адказнасцей, якая праводзіцца згодна шаблону:

  • Павялічвае:
    • Інкапсуляцыю;
    • Прастату ўспрымання;
    • Гатоўнасць кампанентаў да паўторнага выкарыстання;
  • Зніжае:
    • ступень зачэплівання.

2. Стваральнік (Creator)

Клас павінен ствараць экзэмпляры тых класаў, якія ён можа:

  • Змяшчаць ці агрэгаваць;
  • Запісваць;
  • Выкарыстоўваць;
  • Ініцыялізаваць, маючы патрэбныя даныя.

Можна сказаць, што шаблон «Creator» — гэта інтэрпрэтацыя шаблону «Information Expert» у пытаннях стварэння аб’ектаў.

Альтэрнатыва — шаблон «Фабрыка» (стварэнне аб’ектаў канцэнтруецца ў асобным класе).

3. Кантролер (Controller)

  • Адказвае за аперацыі, запыты на якія прыходзяць ад карыстальніка, і можа здзяйсняць сцэнарыі аднаго ці некалькіх варыянтаў выкарыстання (напрыклад, стварэнне і выдаленне);
  • Не выконвае працу самастойна, а дэлегуе кампетэнтным выканаўцам;
  • Можа ўяўляць сабой:
    • Сістэму ў цэлым;
    • Падсістэму;
    • Каранёвы аб’ект;
    • Прыладу.

4. Слабае зачэпліванне (Low Coupling)

«Ступень зачэплівання» — мера неадрыўнасці элемента ад іншых элементаў (альбо мера даных, якую ён мае пра іх).

«Слабае» зачэпліванне з’яўляецца ацэначнай мадэллю, якая дыктуе, як размеркаваць абавязкі, якія трэба падтрымваць.

«Слабае» зачэпліванне — размеркаванне адказнасцей і даных, якія забяспечваюць узаемную незалежнасць класаў. Клас з «слабым» зачэпліваннем:

  • Мае слабую залежнасць ад іншых класаў;
  • Не залежыць ад знешніх змяненняў (змяненне ў адным класе аказвае слабы ўплыў на іншыя класы);
  • Просты для паўторнага выкарыстання.

5. Высокая злучанасць (High Cohesion)

Высокая злучанасць класа — гэта ацэнкавая мадэль, скіраваная на ўтрыманне аб’ектаў належным чынам сфакусаванымі, кіраванымі і зразумелымі. Высокая злучанасць звычайна выкарыстоўваецца для падтрымання нізкага зачаплення. Высокая злучанасць азначае, што абавязкі элемента цесна злучаны і сфакусаваны. Разбіццё праграм на класы і падсістэмы з’яўляецца прыкладам дзейнасці, якая павялічвае злучанасць сістэмы.

І наадварот, нізкая злучанасць — гэта сітуацыя, пры якой дадзены элемент мае замнога незвязаных абавязкаў. Элементы з нізкай злучанасцю часта пакутуюць ад таго, што іх цяжка зразумець, цяжка скарыстаць, цяжка падтрымваць.

Злучанасць класа — мера сфакусаванасці прадметных абласцей яго метадаў:

  • «Высокая» злучанасць — сфакусаваныя падсістэмы (прадметная вобласць вызначаная, кіруемая і зразумелая);
  • «Нізкая» злучанасць — абстрактныя падсістэмы абцяжараны:
    • Успрыманне;
    • Паўторнае выкарыстоўванне;
    • Падтрымка;
    • Устойлівасць да знешніх змяненняў.

6. Полімарфізм (Polymorphism)

Будова і паводзіны сістэмы:

  • Вызначаюцца данымі;
  • Зададзены паліморфнымі аперацыямі яе інтэрфейсу.

Прыклад: Адаптацыя камерцыйнай сістэмы да разнастайнасці сістэм уліку падаткаў можа быць забяспечана праз знешні інтэрфейс аб’ектаў-адаптараў.

7. Чыстая выдумка (Pure Fabrication)

Не адносіцца да прадметнай вобласці, але:

  • Змяншае зачэпліванне;
  • Павялічвае злучанасць;
  • Спрашчае паўторнае выкарыстанне.

«Pure Fabrication» адлюстроўвае канцэпцыю сэрвісаў у мадэлі праблемна-арыентаванага праектавання.

Прыклад задачы: Не выкарыстоўвая сродкі класа «А», унесці яго аб’екты ў базу даных.

Вырашэнне: Стварыць клас «Б» для запісу аб’ектаў класа «А».

8. Перанакіраванне (Indirection)

Слабае зачэпліванне між элементамі сістэмы (і магчымасць паўторнага выкарыстання) забяспечваецца прызначэннем прамежкавага аб’екта іх пасярэднікам.

Прыклад: У архітэктуры Model-View-Controller, кантролер (англ. controller) саслабляе зачэпліванне даных (англ. model) з іх прадстаўленнем (англ. view).

9. Устойлівасць да змяненняў (Protected Variations)

Шаблон бароніць элементы ад змянення іншымі элементамі (аб’ектамі ці падсістэмамі) з дапамогай вынясення ўзаемадзеяння ў фіксаваны іінтэрфейс, праз які (і толькі праз які) магчыма ўзаемадзеянне між элементамі. Паводзіны могуць вар’іравацца толькі праз стварэнне іншай рэалізацыі інтэрфейса.

Remove ads

Зноскі

  1. Larman, Craig. Applying UML and Patterns — Third Edition.
Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads