รูปแบบการออกแบบ Python - ผู้สังเกตการณ์
ในรูปแบบนี้วัตถุจะแสดงเป็นผู้สังเกตการณ์ที่รอให้เหตุการณ์ทริกเกอร์ ผู้สังเกตการณ์จะยึดติดกับตัวแบบเมื่อเหตุการณ์ที่ระบุเกิดขึ้น เมื่อเกิดเหตุการณ์ขึ้นผู้ถูกทดลองจะบอกผู้สังเกตการณ์ว่าเกิดขึ้นแล้ว
แผนภาพ UML ต่อไปนี้แสดงถึงรูปแบบผู้สังเกตการณ์ -
จะใช้รูปแบบผู้สังเกตการณ์ได้อย่างไร?
ตอนนี้ให้เราดูวิธีใช้รูปแบบผู้สังเกตการณ์
import threading
import time
import pdb
class Downloader(threading.Thread):
def run(self):
print 'downloading'
for i in range(1,5):
self.i = i
time.sleep(2)
print 'unfunf'
return 'hello world'
class Worker(threading.Thread):
def run(self):
for i in range(1,5):
print 'worker running: %i (%i)' % (i, t.i)
time.sleep(1)
t.join()
print 'done'
t = Downloader()
t.start()
time.sleep(1)
t1 = Worker()
t1.start()
t2 = Worker()
t2.start()
t3 = Worker()
t3.start()
เอาต์พุต
โปรแกรมข้างต้นสร้างผลลัพธ์ต่อไปนี้ -
คำอธิบาย
โค้ดด้านบนอธิบายขั้นตอนการดาวน์โหลดผลลัพธ์เฉพาะ ตามตรรกะของรูปแบบผู้สังเกตการณ์วัตถุทุกชิ้นจะถือว่าเป็นผู้สังเกตการณ์ พิมพ์ผลลัพธ์เมื่อเหตุการณ์ถูกทริกเกอร์