วันศุกร์ที่ 8 กรกฎาคม พ.ศ. 2554

Design Pattern : ฉันเลือกนายเเล้ว Facade

สวัสดีเพื่อนๆทุกคนมาเจอกับผมเเละทีมงาน component Rap_Jung เหมือนเคยนะครับ วันนี้ผมจะมาต่อนะครับต่อจากบทความเมื่อครั้งกระนู้น ที่ผมเขียนเรื่องดีไซน์เเพทเทินไว้
เอาละมาเริ่มกันเลยนะครับในบทความนนี้ผมขอยกตัวอย่างดีไซน์เเพทเทิร์นที่จะนำมาใช้ประกอบบทความ ผมก็เลยเลือกเอาเจ้า facade
facade คือไรอะ?

ตัวfacadeนี้เปรียบเสมือนกับตัวที่เอาไว้ติดต่อกับคลาสอื่นที่เราสนใจ ทำให้การเข้าใช้ระบบได้ง่ายขึ้น มีการสร้าง Object ตัวกลางทำหน้าที่ในการทำกิจกรรมแทนเรา หรือก็คือ facade pattern คือ interfaceหนึ่งที่คอยติดต่อกับ interface อื่นในระบบนั่นเอง
เริ่มเลยนะครับ
package facade;
public class MyClass1{

public void myClass1Func(){
System.out.println("My class");
}
}
public class MyClass2 {
public void myClass2Func(){
System.out.println("your class");
}
}
public class MyFacade {
private static MyFacade myFacadeObj = new MyFacade();
private MyFacade(){
super();
}
public static MyFacade getMyFacadeObject(){
return myFacadeObj;
}
public void class1Func(){
MyClass1 obj = new MyClass1();
}
public void class2Func(){
MyClass2 obj = new MyClass2();
}
}

public class Tester {
public static void main(String[] args){
MyFacade obj = MyFacade.getMyFacadeObject();
obj.class1Func();
obj.class2Func();
}
}
เมื่อเราสร้างคลาสต่างๆเสร็จเเล้วก็ทำอย่างบทความที่เเล้ว พอมาถึงหน้าต่าง Design Pattern Wizard
ไห้เราเลือก project เป็น GOF เเล้ว เลือก Design pattern เป็น facade
ขั้นต่อไปก็เลือกทาเก็ต สโคปครับ ก็เลือกชื่อเเพคเกจเราไป

ต่อมา เลือก facade เป็น MyFacade เเละเลือก subsystem เป็น MyClass1,MyClass2

เเละหน้าต่างต่อมาไห้ ติ้ก creat class diagram

เเค่นี้ก็เรียบร้อยครับ

วันศุกร์ที่ 1 กรกฎาคม พ.ศ. 2554

ตัวอย่างการสร้างโปรแกรมโดยใช้เทคนิค Package scope java โดยใช้ NetBeans

จากที่เราได้พูดถึงเรื่อง Package Scope Java ในตอนที่แล้ว โดยในตอนนี้ผมก็จะขอเสนอการเขียนโปรแกรมโดยนำหลักการ package scope java มาใช้คร่าวๆนะครับ จะเป็นยังไงนั้น เชิญตามไปชมได้เลยครับ
สำหรับในหัวข้อนี้เราจะใช้ NetBeans เป็นเครื่องมือ ซึ่งมันหน้าตาเป็นยังไงและใช้งานพื้นฐานยังไง ผมก็ได้เขียนการใช้งานคร่าวๆไว้แล้วในหัวข้อเก่าๆแล้วนะครับ เอาล่ะ เรามาเริ่มต้นสร้างโปรแกรมกันเลยดีกว่า
ในขั้นตอนแรกนะครับ ผมจะขอสร้าง Project โดยไปที่
            File > New Project >Java > Java Applications จากนั้นกด Next ครับ ซึ่งหน้าต่างถัดมาก็จะได้
โดยในหน้าต่างนี้ ผมจะขอสร้าง Project Name ชื่อว่า Customr และขอเลือกที่จะไม่ Create Main Class ไว้เลยครับ จากนั้นกด Finish ครับ
ซึ่งถัดมาเราก็จะมาทำการสร้าง Class ให้กับโปรแกรมกัน โดย Class แรกที่ผมจะสร้างก็คือ Class Cutomer ครับ การสร้างก็จะเป็นดังนี้ครับ
            File > New File >Java > Java Class 

จากนั้นก็กด Next > แล้วก็จะได้หน้าต่างสำหรับตั้งชื่อขึ้นมา ซึ่งผมก็จะตั้งชื่อว่า Cutomer และตั้ง Package เป็น Customer แล้วกด Finish ได้เลยครับ
ซึ่งหน้าต่างถัดมาก็จะได้ดังรูปข้างล่างนี้
เมื่อได้ตามนั้น เราก็มาเริ่มต้นเขียนโปรแกรมของเรากันดีกว่า โดยผมจะเติม Code ต่างๆลงไป ก็จะได้ดังต่อไปนี้ครับ
ในบรรทัดแรกก็คือการสร้าง package Customer ซึ่งเราได้กำหนดไว้ในขั้นตอนที่แล้วนั่นเอง โดยโปรแกรมนี้ผมจะกำหนดให้ Class Cutomer เป็น abstract class และมี attribute ต่างเป็น private ก็ได้แก่ ชื่อ อายุ และเบอร์โทรศัพท์ ซึ่งจะมีผลตามหลักการของ Encapsulation ครับ จากนั้นผมก็จะทำการสร้าง Method เพื่อทำการ set และ get ค่าของ attribute ที่ได้ทำการ Encapsulation ไว้ โดย get() Method จะทำการสร้างเป็นแบบ public ซึ่งอีก Method ที่ผมได้สร้างขึ้นก็เป็น Method ที่ใช้ในการแสดงข้อมูลต่างๆครับซึ่งก็คือ method tellAboutSelf()
อีก Class หนึ่งที่ผมได้สร้างขึ้นเพื่อนำมาใช้ในการ inheritance กับ abstract class ก็คือ class CusA โดย source code ก็จะเป็นดังนี้
ใน class นี้ผมได้ทำการอ้างถึง class Cutomer โดยการประกาศ extends ไว้ซึ่งก็จะเป็นไปตามของกฎการสืบทอดและ Encapsulation โดยผมได้ใส่ค่า attribute ให้กับ CusA ไว้ 1 ค่าก็คือ ค่าส่วนลด ซึ่งก็จะเป็น private จากนั้นผมก็ทำการสร้าง Constructor method ของ CusA เพื่อทำการ set ค่า Attribute โดยภายใน Method จะมีคำสั่ง super() ซึ่งจะเป็นการเรียกให้ทำการ set ค่า attribute ใน class แม่แบบ จากนั้นก็จะทำการ set ค่า attribute ของตัวมันเอง ซึ่งใน class นี้ก็จะมี Method ที่เหมือนกับ class Cutomer ก็คือ tellAboutSelf() ซึ่ง Method ที่เหมือนกันจะถูก override จาก class แม่แบบ โดยจะมีสร้างกระบวนการของการทำงานใน Method ใหม่ซึ่งก็คือ การแสดงข้อมูลโดยจะมีการเรียกไปที่ tellAboutSelf() ของ class แม่แบบ และทำการกำหนดลงในค่า info

โดยจากโปรแกรมนี้ผมก็ได้สร้างทั้ง 2 class นี้ขึ้นมาแล้ว จากนั้นผมก็จะของสร้าง main หลัก เพื่อทำให้โปรแกรมของเรา run ได้ โดยการสร้างก็จะเป็นดังนี้
            File > New File >Java > Java Main Class กด Next


จากนั้นก็จะได้หน้าต่างที่ใช้ในการสร้าง Main ขึ้นมา ซึ่งผมจะเติม code ลงไปดังนี้

จาก CusA firstA = new CusA("ANAKIN",39,"083214568",10); จะเป็นการสร้าง object ของ CusA class ขึ้นมาที่ชื่อ firstA และทำการกำหนดค่า attribute ต่างๆที่ method CusA() ต้องการก็จะได้แก่ ชื่อ อายุ เบอร์โทรศัพท์ และส่วนลด จากนั้นผมก็ทำการสร้างอีก object หนึ่งที่ชื่อว่า secondA และมีการกำหนดค่า attribute เช่นกัน โดยในคำสั่ง System.out.println ก็จะมีการเรียก method tellAboutSelf() ขึ้นมาทั้งของ firstA และ secondA ซึ่งจะไปเรียกใน class CusA ซึ่ง class CusA ก็จะทำการ override แล้วก็จะแสดงค่าออกมาเมื่อทำการ compile และ run โปรแกรม โดยผลการ run ก็จะออกมาเป็นดังนี้





ผลที่ได้ก็จะเป็นการแสดงค่าต่างๆของ firstA กับ secondA ดังรูปข้างบน


  




เป็นยังไงบ้างครับสำหรับตัวอย่างการสร้างโปรแกรมโดยใช้เทคนิค Package scope java แบบคร่าวๆ ซึ่งผมได้ทำการนำเสนอเอาไว้ในบทความด้านบน หวังว่าคงจะเป็นประโยชน์ต่อท่านผู้อ่านนะครับ และถ้ามีข้อผิดพลาดประการใด ขอความกรุณาให้ท่านผู้อ่านติชมไว้ด้วยนะครับ ขอบคุณครับ


ซึ่งผมก็ขอฝากบทความไว้แค่นี้ก่อน พบกันใหม่ตอนหน้า
สวัสดีครับ