Mae patrymau dylunio yn ffordd wych o wella strwythur a phreifatrwydd cod. Mae'r model Proxy, er enghraifft, yn cynnig dull effeithiol o reoli mynediad i gyffyrddiadau â gwrthrychau. Yn y erthygl hon, byddwn yn archwilio sut i weithredu'r model Proxy yn Ruby, gan drafod ei ddefnyddiau, ei fanteision, a sut i'w weithredu gyda chymorth enghreifftiau cod.
Mae patrymau dylunio yn ddulliau a ddefnyddir gan ddatblygwyr i ddatrys problemau cyffredin sy'n codi yn ystod datblygu meddalwedd. Mae'r rhain yn cynnig strwythurau a dulliau sy'n gallu helpu i wneud y broses ddatblygu yn fwy effeithlon a chynaliadwy. Mae patrymau dylunio yn gallu bod yn gymorth i ddatblygu meddalwedd sy'n hawdd ei chynnal ac sy'n ymateb yn gyflym i newid.
Mae'r model Proxy yn cynnwys creu gwrthrych sy'n gweithredu fel cynrychiolydd ar gyfer gwrthrych arall. Mae'r gwrthrych Proxy yn rheoli mynediad i'r gwrthrych go iawn, gan ganiatáu i'r datblygwr reoli a monitro'r cyffyrddiadau â'r gwrthrych hwnnw. Mae hyn yn arbennig o ddefnyddiol pan fydd angen gweithredu ychwanegol fel cyrchu cyfyngedig, caching, neu logio.
Mae gweithredu'r model Proxy yn Ruby yn syml. Mae angen i ni greu dwy dosbarth: un ar gyfer y gwrthrych go iawn a'r llall ar gyfer y Proxy. Byddwn yn dechrau gyda'r gwrthrych go iawn.
Yn gyntaf, gadewch i ni greu dosbarth sy'n cynrychioli ein gwrthrych go iawn. Byddwn yn galw'r dosbarth hwn yn RealSubject
.
class RealSubject def request "Gais gan RealSubject" end end
Bellach, gadewch i ni greu ein dosbarth Proxy. Mae'r dosbarth hwn yn mynd i dderbyn gwrthrych go iawn yn ei gornel a bydd yn rheoli'r cyffyrddiadau â'r gwrthrych hwnnw.
class Proxy def initialize(real_subject) @real_subject = real_subject end def request # Gallwn ychwanegu gweithredu ychwanegol yma puts "Proxy: Ychwanegu gweithredu cyn y cais" @real_subject.request end end
Mae nawr yn bryd defnyddio ein dosbarth Proxy. Gallwn greu gwrthrych o'r dosbarth RealSubject
a'i drosglwyddo i'r Proxy.
real_subject = RealSubject.new proxy = Proxy.new(real_subject) puts proxy.request
Pan fyddwn yn rhedeg y cod hwn, byddwn yn gweld y canlyniad fel a ganlyn:
Proxy: Ychwanegu gweithredu cyn y cais Gais gan RealSubject
Mae gan ddefnyddio'r model Proxy nifer o fanteision. Mae rhai ohonynt yn cynnwys:
Mae'r enghraifft sylfaenol a drafodwyd yn flaenorol yn dangos sut i weithredu'r model Proxy. Fodd bynnag, gallwn hefyd edrych ar enghreifftiau mwy cymhleth sy'n dangos sut y gellir defnyddio'r model hwn mewn amgylcheddau mwy realistig.
Mae caching yn ffordd dda o wella perfformiad. Gadewch i ni greu Proxy sy'n defnyddio caching i gadw'r canlyniadau o'r cais cyntaf.
class CachingProxy def initialize(real_subject) @real_subject = real_subject @cache = {} end def request unless @cache.key?(:response) puts "CachingProxy: Gweithredu cais a chadw'r canlyniad" @cache[:response] = @real_subject.request else puts "CachingProxy: Defnyddio'r canlyniad cached" end @cache[:response] end end
Gallwn ddefnyddio'r CachingProxy
fel a ganlyn:
real_subject = RealSubject.new caching_proxy = CachingProxy.new(real_subject) puts caching_proxy.request # Gweithredu cais a chadw'r canlyniad puts caching_proxy.request # Defnyddio'r canlyniad cached
Mae diogelwch yn bwysig yn y byd meddalwedd. Gadewch i ni greu Proxy sy'n rheoli mynediad yn seiliedig ar ddirprwy.
class SecurityProxy def initialize(real_subject) @real_subject = real_subject @user_role = "guest" end def set_user_role(role) @user_role = role end def request if @user_role == "admin" @real_subject.request else "Gwrthodwyd mynediad: dim hawl i wneud cais" end end end
Gallwn ddefnyddio'r SecurityProxy
fel a ganlyn:
real_subject = RealSubject.new security_proxy = SecurityProxy.new(real_subject) security_proxy.set_user_role("guest") puts security_proxy.request # Gwrthodwyd mynediad: dim hawl i wneud cais security_proxy.set_user_role("admin") puts security_proxy.request # Gais gan RealSubject
Mae'r model Proxy yn cynnig dull effeithiol o reoli cyffyrddiadau â gwrthrychau yn Ruby. Mae'n caniatáu i ni wella perfformiad, rheoli mynediad, a chynnal logiau. Drwy ddefnyddio'r enghreifftiau a drafodwyd yn yr erthygl hon, gallwch ddechrau gweithredu'r model Proxy yn eich prosiectau Ruby.
Mae'r model hwn yn arbennig o ddefnyddiol mewn amgylcheddau lle mae angen rheoli gwell ar gyfer cyffyrddiadau â gwrthrychau, ac mae'n cynnig dulliau i wella diogelwch a pherfformiad. Mae'n bwysig cofio y gall patrymau dylunio, fel y model Proxy, fod yn gymorth mawr i ddatblygwyr wrth greu meddalwedd sy'n hawdd ei chynnal ac sy'n ymateb yn gyflym i newid.
© 2024 RailsInsights. All rights reserved.