| Subcribe via RSS

The Observer Pattern

October 24th, 2009 | No Comments | Posted in Java, c#

The Observer Pattern


The Observer Class Diagram

เราเปรียบการทำงานของ observer pattern เสมือนการทำงานของการรับหนังสือพิมพ์หรือ magazine
มี Subjectผู้ส่งสาร และ ผู้รับ Observers
ซึ่งความสัมพันธ์ของ Subject ต่อ Observers เป็น 1 to many
1 Subject ต่อ Observers หลายคน

นิยามของ The Observer Pattern

“The Observer Pattern defines a one-to-many dependency between objects so that when one object changes state, all of its dependents are notified and updated automatically”

Q:ทำไมต้องเป็น 1 to many?
A: ด้วย Observer patterns ตัว Subject เป็น object ที่ตรวจสอบและควบคุม State ดังนั้น 1 subject จะมีเพียง 1 state ในทางกลับกันสำหรับ observers ใช้ state ตัวนี้ทั้งที่ไม่ได้เกี่ยวกับมันเลย เรามีหลาย observers ซึ่งขึ้นอยู่กับ สถานะของ Subject ตัวเดียวซึ่งจะบอกพวกมันเมื่อมีการเปลี่ยนแปลง state

Q:how does dependence come into this?
A:เพราะ subject เป็นเจ้าของ data และถ้าหากมีการเปลี่ยนแปลงข้อมูล จะมีการ update ไปที่ observers อัตโนมัติ สิ่งนี้นำไปสู่ OO design ที่ดีกว่าการให้ object(observers) ทั้งหลายจัดการข้อมูลใน resource เดียวกัน

The power of loose coupling
เมื่อ 2 object มีความสัมพันธ์กันอย่างหลวมๆ มันสามารถติดต่อกันได้ แต่ รู้ความเกี่ยวกับกันและกันน้อยมาก
เช่นเดียวกับ Observer Pattern ที่ Subject และ observer เป็น loose coupling

ทำไม?

-Subject รู้เพียงอย่างเดียวเกี่ยวกับ Observer ก็คือ Observer implement interface ใด(Observer Interface) : โดยไม่จำเป็นต้องรู้ว่า object ของ Observer ทำงานอะไร
-เราสามารถเพิ่ม แก้ไข หรือ ลบ observer ตอนไหนก็ได้
-เรา ไม่จำเป็นต้อง แก้ไข subject เมื่อมีการเพิ่ม types ของ observer: ขอเพียงแค่สร้าง class ใหม่ที่ implement interface observer subject จะส่ง notification(update) ให้กับ ทุกๆ object ที่ implement Observer interface
-เราสามารถ reuse subject หรือ observers อย่างอิสระ

สรุป: มันยืดหยุ่นต่อการ modified แต่ละ object อย่างอิสระ
ส่วนเพิ่มเติมเอาเก็บไว้ที่ GoogleDocs เหมือนเดิม :-P The Observer Pattern

Tags: , , ,

KPI(Key Performance Indicator)

October 8th, 2009 | No Comments | Posted in ในงาน

จากการเข้าฟัง KPI (Key Performance Indicator) ของทางบริษัท ซึ่งต้องการให้พนักงานทำงานอย่างมีประสิทธิภาพ และดึงศักยภาพที่มีอยู่ออกมาให้มากที่สุด
ซึ่งทางบริษัทได้ประเมินและแบ่งพนักงานออกเป็น 5 กลุ่มด้วยกันดังนี้

1.Outstanding ทำงานโดดเด่นเป็นที่ประจักษ์แก่ทั่วราชอาณาออฟฟิส
2.Over Standard ทำงานได้ดีเลิศ เสร็จก่อนเวลา
3.Standard อันนี้ไม่ต้องบอก
4.Need to be improved ต้องปรับปรุง
5.Fail ทำงานต่ำกว่ามาตรฐานมาก มีบั๊กบ่อยครั้ง

โดยระบบนี้จะ เน้นสนับสนุนคนที่ทำงานดีมีความตั้งใจ ถ้าหากทำงานต่ำกว่ามาตรฐานจะมีสัญญาณจากหัวหน้าแผนก
เพื่อชี้แจง โดยให้เวลา 3 เดือนเพื่อดูการเปลี่ยนแปลง

การ Implement KPI ตัวนี้จะใช้ร่วมกันกับทุกบริษัททั้งหมดในเครือ C & G (CDG & G-able)

ตอนเช้านั่งรถตู้ไปทำงาน คิดอะไรเพลินๆตลอดทางว่าวันนี้เราไปทำงาน…แต่จะทำอะไรดี
แน่นอนว่าไม่มีมนุษย์เงินเดือนคนไหนทำงานตลอดเวลา จะมีช่วงว่างหรือรอการแจก Defect จาก Tester
บางคนว่างเป็นเดือน นั่งปล่อยเวลาให้สูญเปล่า
เพราะเราเคยชินกับการรอการสั่งงานของหัวหน้าทีม หรือผู้ที่ take role สูงกว่าเรา
จน เราลืมไปว่า การเป็น “Junior”  มีอีกหน้าที่หนึ่งคือการ Update ตัวเอง [ความจริงทุกๆตำแหน่งนั่นแหละ]
บางทีเราอาจสมมติตัวเราเอง take role เป็นผู้สั่งงาน(สั่งตัวเอง)บ้างก็ได้

การตั้งเป้าหมายการทำงานแต่ละวันให้ตัวเอง จะไม่ทำให้ชีวิตการทำงานน่าเบื่อเกินไปนัก :-)

Tags: , ,