Software Framework & Design Pattern Wattanapong suttapak, Software Engineering, school of Information communication Tecnology, university of phayao
จุดประสงค์การเรียนรู้ เข้าใจความหมายของคำว่า กรอบงาน มีความเข้าใจเบื้องต้นเกี่ยวกับ กรอบงานในเชิงซอฟต์แวร์ มีความรู้ความเข้าใจเกี่ยวกับ แบบรูปการออกแบบ มีความรู้ความเข้าใจแบบรูปการออกแบบขั้นสูงได้
Software Framework สมมติถ้ามีคำสั่งให้ตัดกระดาษ ขนาด 4x6 สำหรับปริ้นท์รูปโปสการ์ด แน่นอนว่าทุกคนสามารถตัดได้ ถ้าเปลี่ยนคำสั่งใหม่ ให้ตัดกระดาษ ขนาด 4x6 ทั้งหมด 1000 แผ่น ทุกคนจะยังตัดอยู่หรือไม่? แน่นอนว่า มีบางคนใช้วิธีการตัดทีละแผ่น ไปจนครบ 1000 แผ่น แล้วคุณจะทำอย่างไร
Framework สมมติมีคนทำการสร้างกรอบ ขนาด 4x6 สำหรับครอบกระดาษ และทำการตัดทีละแผ่น หรือบางคนทำการสร้างเครื่องมือ สำหรับตัดกระดาษขนาด 4x6 ทั้งสองวิธี หรืออาจมีวิธีอื่น ที่สามารถตัดกระดาษ 4x6 ทั้ง 1000 แผ่น ทำให้เวลาที่ใช้ในการทำงานนี้น้อยลง
Framework นิยามของ Framework หมายถึง เครื่องมือที่ถูกสร้างขึ้น เพื่อพัฒนาการทำงานเดิมๆ ให้มีความ สะดวก รวดเร็ว ประหยัดเวลา อำนวยความสะดวกต่อผู้ใช้ สามารถ นำเครื่องมือที่สร้างนำกลับมาใช้ใหม่ได้(reusability,reuse)
Framework Software Framework .Net Framework(on Windows) Umbrella Framework(on OS X ) JSP Framework(AWT,Struts, Spring ,Play, Eclipse) Javascript Framework(dojo, Jquery, jQuery Mobile, SWFObject) CSS Framework(Bootstrap, PROFOUNDGRID, Tuktuk, Metro UI CSS ) AJAX Framework(jQuery, Prototype, Ext JS) PHP Framework(CAKE PHP, Code Igniter, Yii , Laravel ) ORM Framework(Hybernate, Yii, Code Igniter, Laravel )
Design Pattern - ถูกพัฒนาขึ้นมาจากกลุ่มของคนสี่คน(Gang of four) โดยถูกเรียบเรียงใน หนังสือ เรื่อง “Design Pattern : Elements of Reusable Object-Oriented Software” (Gamma, et. al. 1995) - จุดประสงค์เพื่อช่วยในการออกแบบซอฟต์แวร์แบบเชิงวัตถุ โดยมีทั้งหมด 23 รูปแบบ โดยสามารถแบ่งกลุ่มเป็น 3 กลุ่มได้แก่ 1. Creational แบบรูปที่มีลักษณะตามการสร้างของวัตถุหรือคลาส 2. Structural แบบรูปที่มีลักษณะตามส่วนประกอบบของวัตถุหรือคลาส 3. Behavioral แบบรูปที่มีลักษณะตามการโต้ตอบระหว่างวัตถุหรือคลาส
Group of Design Pattern Creational Structural Behavioral Abstract factory Builder Factory Prototype Singleton Adapter Bridge Composite Decorator Façade Flyweight Proxy Chain of Responsibility Command Interpreter Iterator Mediator Memento Observer State Strategy Template method Visitor
Creational Design Patterns จัดกลุ่มตามความสัมพันธ์ของการสร้างวัตถุหรือคลาส Design pattern ที่ใช้บ่อยในกลุ่มนี้ Factory Pattern Singleton Pattern
Factory Pattern มีรูปแบบเป็นการสร้างวัตถุหรือคลาส ตัวหลักขึ้นมา โดยบังคับให้ วัตถุหรือคลาสที่ต้องการเข้ามาติดต่อ ผ่านคลาสหรือวัตถุนั้นก่อน
Factory Pattern
Singleton Pattern เป็นรูปแบบสำหรับระบบที่ต้องการสร้างวัตถุหรือคลาสเพียง 1 วัตถุ (คลาส)เท่านั้น เช่น คลาสปรับแต่งระบบ Thread DialogBox เป็นต้น public class Singleton { private static Singleton instance = null; private Singleton() {} public static Singleton getInstance() { if (instance == null) { instance = new Singleton(); } return instance; public void doAnyThing() { // do something
Structural Design Patterns จัดกลุ่มตามองค์ประกอบของวัตถุหรือคลาส Design pattern ที่ใช้บ่อยในกลุ่มนี้ Adapter Pattern Façade Pattern
Adapter Pattern เป็นรูปแบบการสร้างคลาสหรือวัตถุ เพื่อเป็นตัวกลางการทำงาน ระหว่าง คลาส(วัตถุ)หนึ่ง กับ อีกคลาส(วัตถุ)หนึ่ง ลองนึกภาพของแลปทอป 1 เครื่องจะไม่สามารถใช้งานได้(สมมติไม่มี แบตเตอรี่) ดังนั้นแลปทอปต้องมีการรับพลังงานไฟฟ้า ซึ่งแน่นอนว่าไม่สามารถนำไฟ บ้านเข้าสู่แลปทอปโดยตรง ทำให้ต้องมีตัวแปลงไฟจากไฟบ้านเข้าสู่แลปทอป ซึ่งเราเรียกว่า อะแดป เตอร์
Adapter Pattern
Facade Pattern เป็นรูปแบบของการสร้างคลาสสำหรับเป็นตัวแรกในการเข้าถึง คลาสหรือ วัตถุที่ต้องการเข้ามาติดต่อกับ คลาส(วัตถุ) หลายๆ คลาส(วัตถุ) จุดประสงค์เพื่อให้คลาสที่ต้องการเข้ามาติดต่อ ไม่ต้องยุ่งยากจากคลาส อื่นๆ หลายๆ คลาสที่ต้องการติดต่อ
Behavioral Design Patterns จัดกลุ่มตามพฤติกรรมการโต้ตอบและสื่อสารระหว่างวัตถุหรือคลาส Design pattern ที่ใช้บ่อยในกลุ่มนี้ Strategy Pattern Observer Pattern
Strategy Pattern เป็นรูปแบบที่ถูกสร้างเพื่อเป็นแม่แบบให้ คลาสหรือวัตถุที่มี ลักษณะเหมือนกันสืบทอดไปใช้ เพื่อให้เกิดเป็นมาตรฐานเดียวกัน ในการใช้งาน
Observer Pattern เป็นรูปแบบการสร้างคลาสสำหรับการรอรับการเปลี่ยนแปลงที่ เกิดขึ้นจากคลาสหรือวัตถุใดๆ โดยตัว คลาสที่ถูกสร้างเป็น observer นี้จะมีการส่งข้อความไปยังอีกคลาสหรือวัตถุหนึ่งที่รอรับ การเปลี่ยนแปลงจาก คลาสที่เปลี่ยนแปลง
Advance Design Pattern หนึ่งในการประยุกต์ใช้ design pattern ที่นิยมใช้กันคือ MVC [Glenn E. Krasner and Stephen T. Pope, “A cookbook for using the model-view controller user interface paradigm in Smalltalk-80”] แนวคิดนี้ถูกนำไปพัฒนาเฟรมเวิร์คในภาษาต่างๆ มากมายเพื่อ ช่วยให้การพัฒนาระบบรวดเร็วขึ้น MVC แบ่งเป็น 3 องค์ประกอบ ได้แก่ model – view - controller
MVC Design Pattern
MVC Design Pattern Model เป็นศูนย์กลางของโครงสร้างทั้งระบบ View เป็นส่วนของการแสดงผลของระบบ Controller เป็นส่วนของการเชื่อมต่อระหว่าง model หรือ view หรือ ข้อมูลขาเข้า(input) เช่น การคลิกเมาส์ การป้อนข้อมูลทาง คีย์บอร์ด เป็นต้น
MVC Design Pattern MVC on Yii Framework
จบเนื้อหา Framework & Design Pattern