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.