Create Project Part4 : Observer Pattern By Java on IntelliJ IDEA
Observer คือ pattern หนึ่งของการเขียนโปรแกรมเชิงวัตถุ การรับข้อมูลเข้ามาในตัวแปรหนึ่ง และทำการเปลี่ยนแปลงค่าตามข้อมูลที่ได้รับเข้ามา เช่น เลขฐาน2 ซึ่งเราจะกรอกข้อมูลเป็นตัวเลขจำนวนหนึ่ง และให้ตัวแปรรับไป เพื่อเปลี่ยนแปลงค่าว่าเท่ากับเท่าไหร่ ในเลขฐาน2
Part4 . นี้!!!! เราจะต่อจาก Part3. ซึ่งเราจะเพิ่ม Package ชื่อว่า Observer ในไฟล์เดิม นะคะมาเริ่มกันเลยเนอะ !!! Go Go
- void ใช้ประกาศ Method ที่ไม่ต้องการ return ค่ากลับ
- public ใช้ประกาศ Variable , Class และ Method ให้เป็นแบบ public คือสามารถใช้กับ Instance อื่น ๆ ได้
- private ใช้ประกาศ Variable , Method ที่สามารถเรียกใช้ได้เฉพาะใน Class นั้น ๆ
- protected ใช้ประกาศ Variable , Method ที่สามารถเรียกใช้ได้ใน Class นั้น ๆ และก็ Class ที่ extends (Inheritance)
Step1. Create Package : Name Observer เพื่อที่จะเก็บ Class ต่างๆ ไว้ใน Package โดยการคลิกขวาที่ java > New > Package > name : com.easy.observer > OK
Step2. Create Interface Observer เพื่อเอาไว้ ป้อนคำสั่งอื่นๆ โดยการคลิกขวาที่ observer > New > Java Class > Kind : Interface > Name : Observer > OK
โดยปกติเราจะให้เป็น Class ตลอด แต่ครั้งนี้เราให้เป็น Interface เพราะเราไม่รู้ว่าค่าจะเป็นอะไร เลยให้เป็น “Interface”
และ void คือไม่ต้อง return ค่ากลับ แค่นี้เลย เอาไว้เรียกใช้งาน update()
Observer เอาไว้คุยกับ Class : EventSource
Step3. Create Java Class EventSource โดยการคลิกขวาที่ observer > New > Java Class > Name : EventSource > OK
ภายในเพิ่มการทำงาน Methods ให้ทำงานแบบต่าง ดังนี้
//EventSource เอาไว้ให้ class : เลขฐาน เรียกใช้งาน
Step4. Create Java Class BaseNumber โดยการคลิกขวาที่ observer > New > Java Class > Name : BaseNumber > OK
และ implement Observer มาใช้ แต่มันจะพังก่อนให้ โดยการกด Option + Enter > Implement methods > OK ;เพื่อดึง Class Observer มาใช้ และเราจะเห็นดังภาพด้านล่างก็จะไม่พังแล้ว
ประกาศให้ source สามารถใช้ได้ภายใน Class , package, Sub Class
//BaseNumber ดึง Observer มาใช้งาน จาก class : Observer
Step5. Create Java Class BinaryBaseNumber เลขฐาน 2 โดยการคลิกขวาที่ observer > New > Java Class > Name : BinaryBaseNumber > OK
และภายใน BinaryBaseNumber จะสืบทอดจาก BaseNumber “extends BaseNumber” และประกาศ BinaryBaseNumber
และ @Override เพื่อที่จะใช้งาน update โดยการกด command + N เลือก Override Methods > เลือก update():void > OK
แก้ไขส่วนที่เป็น “super.update();” ให้เป็น System.out.println(source.getNumber()+Integer.toBinaryString(source.getNumber())); ดังนี้
//ปริ้นค่าออกมาดู จะประกอบด้วย Value:ที่กรอก และ Value:ที่เปลี่ยนแปลงเป็นเลขฐาน
System.out.println("Binary : "+source.getNumber()+": "+ Integer.toBinaryString(source.getNumber()));
// BinaryBaseNumber สืบทอด class : BaseNumber และคุยกับ class : EventSource
เรียบร้อย ต่อไปก็สร้างเลขฐานตัวต่อไปได้เลย โดยทำแบบเดียวกัน
Step6. Create Java Class OctalBaseNumber เลขฐาน 8 โดยการคลิกขวาที่ observer > New > Java Class > Name : OctalBaseNumber > OK
Step7. Create Java Class HexaBaseNumber เลขฐาน 16โดยการคลิกขวาที่ observer > New > Java Class > Name : HexaBaseNumber > OK
Step8. Create Java Class Main โดยการคลิกขวาที่ observer > New > Java Class > Name : Main > OK
และภายใน Class Main จะเป็นดังนี้
การประกาศตัวแปร เพื่อคำนวณทำได้สองแบบ
1. สรา้งตัวแปรและอ้างชื่อ class แล้วค่อยเรียกใช้ชื่อตัวแปร
BaseNumber binaryBaseNumber = new BinaryBaseNumber(source);
2. บอกตอนทำงานเลย และอ้างชื่อ class เลขฐานเลย
source.subscribe(new BinaryBaseNumber(source)); //เพิ่ม
source.unsubscribe(new BinaryBaseNumber(source)); //ลบ
Step Final. เสร็จแล้วก็วิ่งเลยนะจ๊ะ เห้ยยย : Run Program “Shift + Control + R”
Success Success!! เรียบร้อย เราได้เลยฐานมาแล้วจ้าาา
หวังว่าจะเป็นประโยชน์ต่อผู้ที่สนใจไม่มากก็น้อย ติชมมาได้เลยจ้าาา จะได้พัฒนาต่อไป Project ที่ทำขึ้นมานี้ ก็เพื่อสร้างความเข้าใจให้กับตัวเอง แยกๆ ออกเป็นส่วนๆ จะได้ง่ายต่อการจัดการ แก้ไขเป็นส่วนๆ ไป Bye …. JuBu JuBu …ขอบคุณครูใจดีน่ะงับ