Create Project Part4 : Observer Pattern By Java on IntelliJ IDEA

Tawan_Ait
4 min readAug 18, 2019

--

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 …ขอบคุณครูใจดีน่ะงับ

--

--

No responses yet