JavaRush /Java блогу /Random-KY /Javaдагы мамлекеттик жана стратегия үлгүлөрүнүн ортосунда...
0xFF
Деңгээл
Донецк

Javaдагы мамлекеттик жана стратегия үлгүлөрүнүн ортосундагы айырма

Группада жарыяланган
Негизги Java тиркемелеринде Мамлекет жана Стратегия үлгүлөрүн туура колдонуу үчүн Java программисттери алардын ортосундагы айырманы так түшүнүшү керек. Мамлекеттик жана Стратегиянын экөө тең окшош түзүмгө ээ жана экөө тең ачык/жабык принцибине негизделип, SOLID принциптеринде “O” белгисин билдирсе да, ниети боюнча такыр башкача . Javaдагы СтратегияJavaдагы мамлекеттик жана стратегия үлгүлөрүнүн ортосундагы айырма - 1 үлгүсү кардарга аткаруу ийкемдүүлүгүн камсыз кылуу үчүн тиешелүү алгоритмдердин топтомдорун капсулдаштыруу үчүн колдонулат . Кардар иштөө учурунда каалаган алгоритмди тандай алат . Стратегия үлгүсүнүн кээ бир популярдуу мисалдары шифрлөө, кысуу же сорттоо сыяктуу алгоритмдерди колдонгон code жазуу болуп саналат. Башка жагынан алганда, Мамлекеттик үлгү an objectтин ар кандай абалда өзүн башкача алып жүрүүсүнө мүмкүндүк берет. Анткени реалдуу дүйнөдө an objectтин көбүнчө штаттары болот жана ал ар кайсы штаттарда өзүн башкача алып жүрөт, мисалы, автомат мамлекетте болсо гана товарды сатат , ага тыйын салмайынча сатпайт. Эми сиз Стратегия менен Мамлекеттин үлгүлөрүнүн ортосундагы айырманы ачык көрө аласыз, булар башка ниеттер. State үлгүсү an objectке абалды башкарууга жардам берет, ал эми Стратегия үлгүсү кардарга башка жүрүм-турумду тандоого мүмкүндүк берет. Көрүү оңой эмес дагы бир айырмачылык - жүрүм-турумдун өзгөрүшүнө ким түрткү берип жатат. Стратегия үлгүсүндө, бул контекстке ар кандай стратегияларды берген кардар; Мамлекеттик үлгүдө өтүү контекст же an objectтин өзүнүн абалы менен башкарылат. Кошумчалай кетсек, эгерде сиз Мамлекеттик an objectинин абалын өзгөртүүнү өзүңүз башкарсаңыз, анда контекстке шилтеме болушу керек, мисалы, соода автоматы контексттин учурдагы абалын өзгөртүү ыкмасын чакыра алышы керек. Башка жагынан алганда, Стратегия an objectи эч качан контекстке шилтемени камтыbyte; кардар өзү тандаган Стратегияны контекстке өткөрүп берет. Мамлекеттик жана Стратегия үлгүлөрүнүн ортосундагы айырма Java үлгүлөрү жөнүндө популярдуу интервью суроолорунун бири болуп саналат , Java үлгүлөрү боюнча бул макалада биз аны жакшыраак карап чыгабыз. Биз Javaдагы Стратегия менен Мамлекеттин үлгүлөрүнүн ортосундагы кээ бир окшоштуктарды жана айырмачылыктарды изилдейбиз, бул сизге ушул калыптарды түшүнүүнү жакшыртууга жардам берет. StrategyhasCoinsetState()

Мамлекет менен Стратегиянын үлгүлөрүнүн окшоштуктары

Мамлекеттин жана Стратегиянын үлгүлөрүнүн UML диаграммасын карасаңыз, экөө тең бири-бирине окшош экенин байкайсыз. Өзүнүн жүрүм-турумун өзгөртүү үчүн абалды колдонгон an object -an object катары белгилүү , ошондой эле анын жүрүм-турумун өзгөртүү үчүн Стратегияны колдонгон an object -an object Contextдеп аталат . ContextКардар Context-an object менен иштешерин унутпаңыз. Мамлекеттик үлгү болгон учурда, контекст делегаттар учурдагы an object катары кармалып турган Мамлекеттик an objectиге методдорду чакырат, ал эми Стратегия үлгүсүндө, контекст Стратегиянын an objectисин параметр катары колдонот же түзүү учурунда берилет. an objectтин контексти. Java тorндеги абалдын үлгүсүнүн UML диаграммасы Javaдагы мамлекеттик жана стратегия үлгүлөрүнүн ортосундагы айырма - 2 Мамлекеттик үлгү үчүн бул UML диаграммасы Java тorнде an objectиге багытталган соода автоматынын дизайнын түзүүнүн классикалык көйгөйүн сүрөттөйт. Автоматтын абалы интерфейстин жардамы менен берилгенин көрө аласыз, анда конкреттүү абалды көрсөтүү үчүн ишке ашыруу бар. Ар бир мамлекеттин контекстте чакырылган аракеттердин натыйжасында башка абалга өтүү үчүн an object контекстине шилтемелер бар. Java тorндеги стратегия үлгүсүнүн UML диаграммасы Javaдагы мамлекеттик жана стратегия үлгүлөрүнүн ортосундагы айырма - 3 Стратегия үлгүсү үчүн бул UML диаграммасы түрлөрдүн функционалдык ишке ашырууларын камтыйт. Көптөгөн сорттоо алгоритмдери бар болгондуктан, бул дизайн үлгүсү кардарга an objectтерди сорттоодо алгоритмди тандоого мүмкүндүк берет. Чынында, Java Collection алкагындаCollections.sort() Java an objectилерин сорттоо үчүн колдонулган ыкманы ишке ашыруу үчүн бул үлгү колдонот . Бир гана айырмасы, кардарга сорттоо алгоритмин тандоого уруксат берүүнүн ордуна, ал Java үчүн Comparator же Comparable интерфейсинин инстанциясын өткөрүү менен салыштыруу стратегиясын көрсөтүүгө мүмкүндүк берет . Келгиле, Java бул эки негизги дизайн үлгүлөрүнүн ортосундагы бир нече окшоштуктарды карап көрөлү:
  1. Үлгүлөр, Мамлекет жана Стратегия, аларды колдонгон an objectтин контекстине таасир этпестен, жаңы абалды жана стратегияны кошууну жеңилдетет.

  2. Бул экөө тең сиздин codeуңузду ачык/жабык принцибине ылайык сактайт , башкача айтканда дизайн кеңейтүүлөр үчүн ачык, бирок өзгөртүүгө жабык болот. Мамлекеттин жана Стратегиянын үлгүлөрүндө an objectтин контексти өзгөртүүлөргө, жаңы мамлекеттерди же жаңы стратегияларды киргизүүгө жабык болот, же башка мамлекеттин контекстин өзгөртүүнүн кереги жок же минималдуу өзгөртүүлөр.

  3. Объекттин контексти Объекттин Статистика үлгүсүндөгү инициализация абалынан башталгандай эле, an objectтин контекстинде Javaдагы Стратегия үлгүсүндө демейки стратегия бар.

  4. Статистика үлгүсү ар кандай an objectтик абалдар түрүндөгү ар кандай жүрүм-турумду билдирет, ал эми Стратегия үлгүсү ар кандай an objectтик стратегиялар түрүндөгү ар кандай жүрүм-турумду билдирет.

  5. Экөө тең, Стратегия жана Мамлекет, жүрүм-турумду ишке ашыруунун субкласстарына көз каранды. Ар бир конкреттүү стратегия абстракттуу стратегияны кеңейтет; ар бир мамлекет мамлекетти көрсөтүү үчүн колдонулган интерфейстин субклассы же абстракттуу класс болуп саналат.

Javaдагы Стратегия менен Мамлекеттин үлгүлөрүнүн ортосундагы айырмачылыктар

Ошентип, азыр биз Мамлекет менен Стратегиянын үлгүлөрү түзүлүшү боюнча окшош экенин билебиз, бирок алардын ниети башка. Келгиле, бул дизайн үлгүлөрүнүн ортосундагы кээ бир негизги айырмачылыктарды карап көрөлү.
  1. Стратегиянын үлгүсү тиешелүү алгоритмдердин жыйындысын камтыйт жана кардарга иштөө учурунда курамына жана өкүлчүлүгүнө карабастан, бири-бирин алмаштыруучу жүрүм-турумду колдонууга мүмкүндүк берет, экинчи жагынан, Мамлекеттик үлгү класска ар кандай штаттарда ар кандай жүрүм-турумду көрсөтүүгө жардам берет.

  2. Мамлекет менен Стратегиянын үлгүлөрүнүн кийинки айырмасы, Мамлекет an objectтин абалын камтыйт , ал эми Стратегия үлгүсү алгоритмди же стратегияны камтыйт. Күй an object менен байланышкандыктан, аны кайра колдонууга болбойт, бирок стратегияны же алгоритмди анын контекстинен ажыратуу менен биз аны кайра колдоно алабыз.

  3. Мамлекеттик үлгүдө жеке мамлекет мамлекеттердин ортосундагы өтүүлөрдү ишке ашыруу үчүн контекстке шилтемени камтышы мүмкүн, бирок Стратегияда ал колдонулган контекстке шилтеме камтылbyte.

  4. Стратегияны ишке ашыруу аны колдоно турган an objectке параметр катары берorши мүмкүн, мисалы Collection.sort() стратегия болгон Comparator алат. Экинчи жагынан, абал an objectтин контекстинин бир бөлүгү болуп саналат жана убакыттын өтүшү менен an objectтин контексти бир абалдан экинчи абалга өтөт.

  5. Стратегия да, Мамлекет да ачык/жабык принцибине таянса да, Стратегия Бирдиктүү жоопкерчorк принцибине да ылайык келет, анткени ар бир стратегия жеке алгоритмди камтыйт, ар кандай стратегиялар бири-биринен көз карандысыз. Бир стратегияны өзгөртүү башка стратегияны өзгөртүүнү талап кылbyte.

  6. Стратегиянын жана Мамлекеттин үлгүлөрүнүн дагы бир теориялык айырмасы, жаратуучу an objectтин "Кантип" бөлүгүн аныктайт, мисалы, "Кантип" сорттоо an objectи маалыматтарды сорттойт, экинчи жагынан Мамлекеттик үлгү "эмне" жана "качан" бөлүктөрүн аныктайт. an objectтин, мисалы, an object белгилүү бир абалда болгондо эмне кыла алат.

  7. Мамлекеттик өткөөлдөрдүн тартиби Мамлекеттик үлгүдө так аныкталган, Стратегиянын үлгүсүнө мындай талап жок. Кардар өз каалоосу боюнча Стратегияны ишке ашыруунун каалаган түрүн тандоодо эркин.

  8. Стратегиянын үлгүсүнүн кээ бир кеңири таралган мисалдары бул алгоритмдердин инкапсуляциясы, мисалы сорттоо алгоритмдери, шифрлөө алгоритмдери же кысуу алгоритми. Эгер сиз codeуңузда ар кандай тиешелүү алгоритмдерди колдонуу керек экенин көрсөңүз, Стратегия үлгүсүн колдонууну ойлонушуңуз керек. Башка жагынан алганда, Мамлекеттик үлгүнү колдонууну таануу абдан оңой, эгер сиз абалды жана мамлекеттердин ортосундагы өткөөлдөрдү көп уяча шарттуу билдирүүлөрсүз көзөмөлдөө керек болсо, Мамлекеттик үлгү колдонууга туура үлгү.

  9. Мамлекет менен Стратегиянын үлгүлөрүнүн ортосундагы эң акыркы, бирок эң маанилүү айырмачылыктардын бири Стратегияга өзгөртүү Кардар тарабынан ишке ашат, ал эми абалга өзгөртүү контекст же an objectтин абалы тарабынан ишке ашырылышы мүмкүн.

Мунун баары Javaдагы Мамлекеттик жана Стратегия үлгүлөрүнүн ортосундагы айырмачылык жөнүндө . Мен айткандай, экөө тең класстарында жана UML диаграммаларында окшош, экөө тең ачык/жабык принциптерди жана жүрүм-турумду камтыйт. Аткаруу учурунда контекстке, балким, параметр же курама an object катары кабыл алынган алгоритмди же стратегияны инкапсуляциялоо үчүн Стратегия үлгүсүн колдонуңуз жана Javaдагы абалдын өтүүлөрүн көзөмөлдөө үчүн State үлгүсүн колдонуңуз. Бул жерде оригиналдуу
Комментарийлер
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION