วันอาทิตย์ที่ 13 เมษายน พ.ศ. 2557

คึกอยากจะทบทวน Spring Framework part 2

: Basic concept of "Hello Google"

ติดค้างจากคำถามที่ว่า : ไม่เคยใช้ framework อะไรมาก่อนเลย มีแต่พื้นฐานจาวาธรรมดา จะเรียนรู้ได้อย่างไรล่ะ?
ตอบ : อันที่จริงผมก็ไม่แม่นเรื่อง web application เหมือนกัน ดังนั้นเรามาเริ่มทำความเข้าใจร่วมกันอย่างนี้นะครับ
- โดยปกติแล้ว web application จะมีสองโลกที่แตกต่างกัน คือโลกของ server กับโลกของ client ทั้งสองโลกจะอาศัยข้อกำหนดที่เรียกว่า protocol เป็นตัวกลางในการติดต่อสื่อสารกัน
- protocol มีหลายประเภท (เช่น HTTP protocol) แต่ละประเภทก็มีข้อกำหนดหยุมหยิมแตกต่างกันไป ซึ่งเราจะไม่พูดถึง protocol จริงๆ แต่จะจำลองเอาว่า
- ให้ interface เป็นดั่ง protocol และ class เป็นดั่งโลกทั้งสอง

ถาม : Interface กับ Class เกี่ยวดองกันอย่างไร?
ตอบ : เมื่อฝึกเขียนจาวา เรียนรู้จาวา เราอาจยังไม่รู้จัก interface ทว่าผมอยากบอกว่าแท้จริงแล้วจาวานั้นเต็มไปด้วย interface มันเป็นข้อกำหนดประการหนึ่งที่ทำให้คลาสถูกบังคับให้เกิดพฤติกรรม มาถึงจุดนี้บางคนก็งงว่าคลาสนิยามพฤติกรรมของตัวเองได้ จะมี interface อีกทำไม ก็ขอย้ำว่า เพื่อบังคับให้เกิดพฤติกรรม หรือก็คือ กติกา นั่นเอง เช่น นักกีฬา (ให้เป็น class นักกีฬา) จะเล่นบาสได้ก็ต้องรู้จักกติกาของการเล่นบาสฯ (ให้เป็น interface ของกีฬาบาสฯ) ดังนั้น นักกีฬาที่ implements กติกาการเล่นบาสฯ ก็จะเป็นนักกีฬาที่เล่นบาสฯได้ เป็นต้น

ถาม : ไหนลองจำลองการสื่อสารกันระหว่างคลาส ที่ใช้ Interface?
ตอบ : ง่ายๆก่อนนะ เริ่ม NetBean หรือ Eclipse (ผมใช้ Eclipse นะ) แล้วทำตามขั้นตอนต่อไปนี้
1.1) สร้าง package ชื่อ sample.client
1.2) สร้าง package ชื่อ sample.server
1.3) สร้าง package ชื่อ sample.protocol
2.1) สร้าง class ชื่อ Browser ไว้ใน sample.client ให้มี main อยู่ด้านใน



2.2) สร้าง class ชื่อ Application ไว้ใน sample.server


3.1) สร้าง interface ชื่อ HttpProtocol ไว้ใน sample.protocol ระบุข้อบังคับเป็น
public String get(String websiteName);


4.1) บังคับให้ class ชื่อ Application จง implements เจ้า interface ที่ชื่อ HttpProtocol
4.2) แล้วเขียนรายละเอียดดังนี้
public String get(String websiteName) {
     return "Hello " + websiteName;
}


5.1) กลับไปที่ class ชื่อ Browser ใน main ให้เขียนว่า
HttpProtocol protocol = new Application();
System.out.println( protocol.get("Google") );
5.2) จากนั้น run ก็จะได้ผลลัพธ์เป็น
Hello Google


ต่อไปเมื่อเราศึกษา Spring Framework (แท้จริงเป็นเรื่องของ OOP อยู่แล้ว) เราจะพบว่ามี interface ก็จะมี class ที่ implements เจ้า interface นี้ไปใช้ และคลาสนั้นจะเขียนชื่อต่อท้ายว่า Impl (ข้อแนะนำของพวกเขา) เช่นคลาส A ใช้เจ้า interface ชื่อ B ก็จะเขียนชื่อคลาส A ใหม่ว่า AImpl เป็นต้น

เอาล่ะครับผมอยากให้เข้าใจตัวอย่างข้างต้นนี้เสียก่อน ถ้าเข้าใจว่า อ้อ เขาตกลงจะเขียนกันแบบนี้นะ เอา interface มารับ object ที่เกิดจาก class แล้วก็เรียกใช้บริการ (พฤติกรรม) ตามที่ interface นั้นระบุ เป็นอันว่าเราคุยเรื่องเดียวกันแล้ว

ต่อไป part 3 ก็จะบุกเข้าหา Spring มากขึ้นเรื่อยๆ ส่วนสุดท้ายนี้คือโค้ดตัวอย่างข้างต้นครับ (เปิดด้วย eclipse นะ)

http://www.mediafire.com/download/ocvp1v0rsax98hy/

1 ความคิดเห็น:

  1. ไม่ระบุชื่อ4 ธันวาคม 2562 เวลา 01:37

    เหมือนจะเข้าใจนะ แต่งงไปหมดเลย เจ้านี้เจ้านั้น interface นี้ interface นั้น คือใครอะไรยังไง งงไปหมดเลย

    ตอบลบ