Mae'r patrwm gwyliwr (Observer Pattern) yn un o'r patrwmau dylunio mwyaf poblogaidd yn y byd datblygu meddalwedd. Mae'n caniatáu i unedau (neu 'gwyliwr') dderbyn gwybodaeth am newidiadau yn uned arall (neu 'gweithredwr') heb orfod cysylltu'n uniongyrchol â hi. Mae hyn yn creu cysylltiad rhydd rhwng y ddwy uned, gan ei gwneud yn haws i gynnal a datblygu'r cod. Yn yr erthygl hon, byddwn yn archwilio sut i weithredu'r patrwm gwyliwr yn Ruby, gan ddefnyddio enghreifftiau cod a chymhwysiadau ymarferol.
Mae'r patrwm gwyliwr yn caniatáu i unedau (gwyliwr) dderbyn hysbysiadau pan fydd uned arall (gweithredwr) yn newid ei statws. Mae hyn yn arbennig o ddefnyddiol mewn achosion lle mae angen i sawl elfen o'r system ymateb i newidiadau yn uned benodol. Mae'r patrwm hwn yn cynnwys tri chydran bennaf:
Yn y rhan hon, byddwn yn edrych ar sut i greu gweithredwr a gwyliwr yn Ruby. Byddwn yn dechrau gyda'r gweithredwr, yna creu'r gwyliwr, a'r diwedd, byddwn yn dangos sut i gysylltu'r ddau.
Yn gyntaf, gadewch i ni greu'r dosbarth gweithredwr. Mae'r dosbarth hwn yn cynnal rhestr o'r gwyliwr a'i hysbysu pan fydd newid yn digwydd.
class Subject
def initialize
@observers = []
end
def register_observer(observer)
@observers << observer
end
def remove_observer(observer)
@observers.delete(observer)
end
def notify_observers
@observers.each { |observer| observer.update(self) }
end
def state=(value)
@state = value
notify_observers
end
def state
@state
end
end
Yn y cod uchod, rydym wedi creu dosbarth o'r enw Subject sy'n cynnal rhestr o'r gwyliwr. Mae gennym ddau ddull pwysig: register_observer i gofrestru gwyliwr, a notify_observers i hysbysu'r gwyliwr pan fydd y statws yn newid.
Nawr, gadewch i ni greu'r dosbarth gwyliwr. Mae'r dosbarth hwn yn ymateb i'r hysbysiadau a dderbyniwyd gan y gweithredwr.
class Observer
def update(subject)
puts "The state has changed to: #{subject.state}"
end
end
Yn y cod uchod, rydym wedi creu dosbarth o'r enw Observer sy'n cynnwys dull update. Mae'r dull hwn yn derbyn y gweithredwr fel paramedr a'i ddefnyddio i ddangos y statws newydd.
Nawr, gadewch i ni gysylltu'r gweithredwr a'r gwyliwr. Byddwn yn creu enghraifft o'r ddau ddosbarth yn gweithio gyda'i gilydd.
subject = Subject.new observer = Observer.new subject.register_observer(observer) subject.state = "New State 1" subject.state = "New State 2"
Yn y cod uchod, rydym wedi creu enghraifft o'r dosbarth Subject a'r dosbarth Observer. Rydym yn cofrestru'r gwyliwr gyda'r gweithredwr, ac yna newidwn y statws. Bydd y gwyliwr yn derbyn hysbysiad am y newidiadau.
Mae'r patrwm gwyliwr yn cynnig nifer o fanteision:
Mae'r patrwm gwyliwr yn cael ei ddefnyddio mewn sawl cyd-destun, gan gynnwys:
Mae'r patrwm gwyliwr yn ddull pwerus a defnyddiol ar gyfer rheoli newidiadau yn y cod. Mae'n cynnig rhyddhad o gysylltiadau rhwng elfenau, gan ei gwneud yn haws i gynnal a datblygu systemau cymhleth. Trwy ddefnyddio Ruby, gallwn weithredu'r patrwm hwn yn hawdd, gan greu gweithredwyr a gwyliwyr sy'n gweithio gyda'i gilydd yn effeithiol.
Gobeithio bod yr erthygl hon wedi rhoi gwybodaeth fanwl i chi am weithredu'r patrwm gwyliwr yn Ruby. Peidiwch ag oedi i archwilio a defnyddio'r patrwm hwn yn eich prosiectau eich hun!
© 2024 RailsInsights. All rights reserved.