JavaRush /Блоги Java /Random-TG /Тафовут байни намунаҳои давлатӣ ва стратегия дар Java
0xFF
Сатҳи
Донецк

Тафовут байни намунаҳои давлатӣ ва стратегия дар Java

Дар гурӯҳ нашр шудааст
Барои дуруст истифода бурдани намунаҳои Ҳолат ва Стратегия дар барномаҳои асосии Java, барои барномасозони Java муҳим аст, ки фарқияти байни онҳоро возеҳ фаҳманд. Гарчанде ки ҳарду намуна, Давлат ва Стратегия сохтори якхела доранд ва ҳарду ба принсипи кушода/пўшида асос ёфтаанд, ки "O" -ро дар принсипҳои SOLID ифода мекунанд, онҳо аз ҷиҳати ният комилан фарқ мекунанд . Тафовут байни намунаҳои давлатӣ ва стратегия дар Java - 1Намунаи Стратегия дар Java барои фарогирии маҷмӯи алгоритмҳои алоқаманд барои таъмини чандирии иҷро ба муштарӣ истифода мешавад . Мизоҷ метавонад ҳар як алгоритмро дар вақти иҷро бидуни тағир додани контексти синфе, ки Strategy. Баъзе намунаҳои маъмули намунаи Стратегия ин навиштани codeест, ки алгоритмҳоро истифода мебарад, ба монанди рамзгузорӣ, фишурдасозӣ ё мураттабсозӣ. Аз тарафи дигар, намунаи давлатӣ имкон медиҳад, ки an object дар ҳолатҳои гуногун ба таври гуногун рафтор кунад. Зеро дар ҷаҳони воқеӣ an object аксар вақт ҳолат дорад ва он дар иёлатҳои гуногун ба таври гуногун рафтор мекунад, масалан, мошини фурӯшанда танҳо молро мефурӯшад, агар он дар иёлот бошад hasCoin, то он даме, ки шумо ба он танга нагузоред, намефурӯшад. Акнун шумо фарқи байни шаклҳои Стратегия ва давлатро равшан мебинед, инҳо ниятҳои гуногунанд. Намунаи давлатӣ ба an object дар идоракунии ҳолат кӯмак мекунад, дар ҳоле ки намунаи Стратегия ба муштарӣ имкон медиҳад, ки рафтори дигарро интихоб кунад. Тафовути дигаре, ки диданаш он қадар осон нест, ин аст, ки кӣ тағироти рафторро пеш мебарад. Дар мавриди намунаи Стратегия, ин муштарӣ аст, ки стратегияҳои гуногунро ба контекст пешниҳод мекунад; дар намунаи давлатӣ, гузариш аз ҷониби контекст ё ҳолати худи an object назорат карда мешавад. Илова бар ин, агар шумо тағироти ҳолатиро дар an objectи Давлат худатон идора кунед, бояд истинод ба контекст бошад, масалан, мошини фурӯшанда бояд усули setState()тағир додани ҳолати кунунии контекстро даъват кунад. Аз тарафи дигар, an objectи Стратегия ҳеҷ гоҳ истинод ба контекст надорад; худи муштарӣ Стратегияи интихобкардаи худро ба контекст интиқол медиҳад. Фарқи байни намунаҳои давлатӣ ва стратегия яке аз саволҳои маъмули мусоҳиба дар бораи намунаҳои Java мебошад , дар ин мақола дар бораи намунаҳои Java мо онро бодиққат дида мебароем. Мо баъзе шабоҳатҳо ва фарқиятҳои байни намунаҳои Стратегия ва Давлатро дар Java меомӯзем, ки ба шумо дар беҳтар кардани фаҳмиши шумо дар бораи ин намунаҳо кӯмак мекунад.

Монандиҳо байни намунаҳои давлат ва стратегия

Агар шумо ба диаграммаи UML-и намунаҳои давлат ва стратегия нигаред, шумо хоҳед дид, ки ҳарду ба ҳамдигар монанданд. Объекте, ки Давлатро барои тағир додани рафтораш истифода мебарад, ҳамчун -an object маълум аст , ба ҳамин монанд an objectе, ки стратегияро барои тағир додани рафтораш истифода мебарад , -an object Contextномида мешавад . ContextДар хотир доред, ки муштарӣ бо Context-an object ҳамкорӣ мекунад. Дар ҳолати намунаи давлатӣ, вакилони контекст усулҳоро ба an objectи давлатӣ даъват мекунанд, ки он ҳамчун an objectи ҷорӣ нигоҳ дошта мешавад ва дар ҳолати намунаи Стратегия, контекст an objectи Стратегияро ҳамчун параметр истифода мебарад ё ҳангоми эҷод таъмин карда мешавад. контексти an object. Диаграммаи UML-и намунаи давлатӣ дар Java Тафовут байни намунаҳои давлатӣ ва стратегия дар Java - 2 Ин диаграммаи UML барои намунаи давлатӣ мушкилоти классикии эҷоди тарҳи автоматии ба an object нигаронидашударо дар Java тасвир мекунад. Шумо мебинед, ки ҳолати мошини автоматӣ бо истифода аз интерфейс муаррифӣ карда мешавад, ки пас аз он барои муаррифии ҳолати мушаххас татбиқ карда мешавад. Ҳар як давлат инчунин ба контексти an object барои гузариш ба ҳолати дигар дар натиҷаи амалҳои дар контекст даъватшуда истинод дорад. Диаграммаи UML-и намунаи стратегия дар Java Тафовут байни намунаҳои давлатӣ ва стратегия дар Java - 3 Ин диаграммаи UML барои намунаи Стратегия дорои амалисозии функсионалии навъҳо мебошад. Азбаски бисёр алгоритмҳои ҷудокунӣ вуҷуд доранд, ин намунаи тарроҳӣ ба муштарӣ имкон медиҳад, ки ҳангоми ҷудокунии an objectҳо алгоритм интихоб кунад. Дар асл, чаҳорчӯбаи Java Collection ин намунаро барои татбиқи усуле истифода мебарад Collections.sort(), ки барои ҷудо кардани an objectҳо дар Java истифода мешавад. Ягона фарқият дар он аст, ки ба ҷои он ки ба муштарӣ иҷозат диҳад, ки алгоритми ҷудокуниро интихоб кунад, он ба вай имкон медиҳад, ки стратегияи муқоисаро тавассути интиқоли намунаи интерфейси муқоисакунанда ё муқоисашаванда ба Java муайян кунад . Биёед ба чанд шабоҳати байни ин ду намунаи асосии тарроҳии Java назар андозем:
  1. Ҳарду намуна, Давлат ва Стратегия, илова кардани ҳолат ва стратегияи навро бидуни таъсир ба контексти an objectе, ки онҳоро истифода мебарад, осон мекунад.

  2. Ҳардуи инҳо рамзи шуморо мувофиқи принсипи кушода/пўшида нигоҳ медоранд , яъне тарҳ барои васеъшавӣ боз хоҳад буд, аммо барои тағирот пӯшида мешавад. Дар мавриди намунаҳои давлат ва стратегия, контексти an object ба тағирот, ҷорӣ кардани давлатҳои нав ё стратегияҳои нав баста аст ё ба шумо лозим нест, ки контексти давлати дигар ё тағироти ҳадди ақалро тағир диҳед.

  3. Ҳамон тавре ки контексти an object аз ҳолати ибтидоии an object дар намунаи давлатӣ оғоз мешавад, контексти an object низ дар мавриди намунаи Стратегия дар Java стратегияи пешфарз дорад.

  4. Намунаи давлатӣ рафторҳои гуногунро дар шакли ҳолатҳои гуногуни an objectҳо нишон медиҳад, дар ҳоле ки намунаи Стратегия рафтори гуногунро дар шакли стратегияҳои гуногуни an objectҳо ифода мекунад.

  5. Ҳарду намуна, Стратегия ва Давлат, аз зерсинфҳои амалисозии рафтор вобастаанд. Ҳар як стратегияи мушаххас як Стратегияи абстрактиро васеъ мекунад; ҳар як давлат зеркласси интерфейс ё синфи абстрактӣ мебошад , ки барои муаррифии давлат истифода мешавад.

Тафовут байни намунаҳои стратегия ва давлат дар Java

Ҳамин тавр, ҳоло мо медонем, ки намунаҳои давлат ва стратегия аз ҷиҳати сохтор ба ҳам монанданд, аммо нияти онҳо гуногун аст. Биёед баъзе фарқиятҳои калидии байни ин тарҳҳои тарроҳиро дида бароем.
  1. Намунаи Стратегия маҷмӯи алгоритмҳои алоқамандро фаро мегирад ва ба муштарӣ имкон медиҳад, ки сарфи назар аз таркиб ва намояндагӣ дар вақти корӣ рафторҳои ивазшавандаро истифода барад, аз тарафи дигар, намунаи давлатӣ ба синф дар нишон додани рафторҳои гуногун дар иёлатҳои гуногун кӯмак мекунад.

  2. Фарқи навбатии байни намунаҳои давлат ва стратегия дар он аст, ки Давлат ҳолати an objectро фаро мегирад , дар ҳоле ки намунаи Стратегия алгоритм ё стратегияро фаро мегирад. Азбаски ҳолат бо an object алоқаманд аст, онро дубора истифода кардан мумкин нест, аммо бо ҷудо кардани стратегия ё алгоритм аз контексти он мо метавонем онро дубора истифода барем.

  3. Дар намунаи давлатӣ, ҳолати шахсӣ метавонад истинод ба контекст барои амалисозии гузариш байни давлатҳоро дар бар гирад, аммо Стратегия истинод ба контекст, ки дар он истифода мешавад, дар бар намегирад.

  4. Татбиқи Стратегияро метавон ҳамчун параметр ба an objectе, ки онро истифода мебарад, интиқол дод, масалан Collection.sort() Муқоисакунандаро мегирад , ки стратегия аст. Аз тарафи дигар, ҳолат як ҷузъи худи контексти an object аст ва бо мурури замон контексти an object аз як ҳолат ба ҳолати дигар мегузарад.

  5. Ҳарчанд ҳам Стратегия ва ҳам Давлат принсипи кушода/пўшидаро риоя мекунанд, Стратегия инчунин Принсипи Ягона Масъулиятро риоя мекунад, зеро ҳар як Стратегия алгоритми инфиродӣ дорад, стратегияҳои гуногун аз ҳамдигар новобастаанд. Тағир додани як стратегия тағир додани стратегияи дигарро талаб намекунад.

  6. Фарқи дигари назариявӣ байни намунаҳои Стратегия ва давлат дар он аст, ки созанда қисми "Чӣ тавр" -и an objectро муайян мекунад, масалан, "Чӣ гуна" an objectи ҷудокунӣ маълумотро ҷудо мекунад, аз тарафи дигар, намунаи давлатӣ "чӣ" ва "кай" -ро муайян мекунад. қисмҳои an object, масалан, вақте ки an object дар ҳолати муайян чӣ кор карда метавонад.

  7. Тартиби гузаришҳои давлатӣ дар намунаи давлатӣ хуб муайян карда шудааст, барои намунаи Стратегия чунин талабот вуҷуд надорад. Мизоҷ дар интихоби ҳама гуна татбиқи Стратегияи интихобкардааш озод аст.

  8. Баъзе аз намунаҳои маъмули намунаи Стратегия инкапсуляцияи алгоритмҳо мебошанд, ба монанди алгоритмҳои ҷудокунӣ, алгоритмҳои рамзгузорӣ ё алгоритми фишурдасозӣ. Агар шумо бинед, ки рамзи шумо бояд намудҳои гуногуни алгоритмҳои алоқамандро истифода барад, шумо бояд намунаи Стратегияро истифода баред. Аз тарафи дигар, эътирофи истифодаи намунаи давлатӣ хеле осон аст, агар ба шумо лозим ояд, ки гузариши ҳолати ва ҳолатиро бидуни изҳороти шартии лона идора кунед, намунаи давлатӣ намунаи дурусти истифода аст.

  9. Охирин, вале яке аз муҳимтарин фарқиятҳои байни намунаҳои Давлат ва Стратегия дар он аст, ки тағирот ба Стратегия аз ҷониби Мизоҷ анҷом дода мешавад, дар ҳоле ки тағиротро ба Ҳолат метавонад аз ҷониби контекст ё ҳолати худи an object анҷом диҳад.

Ин ҳама дар бораи фарқи байни намунаҳои давлатӣ ва стратегия дар Java аст . Тавре ки ман гуфтам, ҳарду дар синфҳои худ ва диаграммаҳои UML ба ҳам монанданд, ҳарду принсипҳои кушода/пўшидаро таъмин мекунанд ва рафтори инкапсулавиро таъмин мекунанд. Намунаи Стратегияро барои фарогирии алгоритм ё стратегияе, ки дар вақти корӣ ба контекст дучор мешавад, шояд ҳамчун параметр ё an objectи таркибӣ истифода баред ва намунаи Ҳолатиро барои назорати гузариши ҳолат дар Java истифода баред. Дар ин ҷо аслӣ
Шарҳҳо
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION