Monday, June 10, 2013

Prototype Pattern

Prototype Pattern
เป็นรูปแบบการเขียนอีกแบบหนึ่งซึ่ง มีประโยชน์ทางด้านการใช้ Object ที่มีจำนวนมาก ๆ โดยที่ว่าเราไม่ต้องไป New Object กันอีกต่อไปเรื่อย ๆ ซึ่งทำให้เปลืองทรัพยากรด้วย เราก็จะต้องมีตัวต้นแบบ และก็ Clone มาเรื่อย ๆ อย่างเช่น Object ของมอนเตอร์ ในเกม เป็นต้นแบบนี้

UML ของ Prototype Pattern

Client - จะสร้าง Object มาแล้วไปถาม Prototype Class ว่าจะคัดลอก
Prototype - กำหนด Interface class สำหรับการสร้าง Object และ Clone
ConcreatePrototype - เป็นรูปร่างหน้าตาของสิ่งที่สร้างขึ้นมาและสามารถ โคลนตัวเองได้

ตัวอย่าง Code
public interface Prototype {
 public abstract Object clone ( );
}

 

public class ConcretePrototype implements Prototype {
 public Object clone() {
  return super.clone();
 }
}

public class Client {

 public static void main( String arg[] ) 
 {
  ConcretePrototype obj1= new ConcretePrototype ();
  ConcretePrototype obj2 = ConcretePrototype)obj1.clone();
 }

}
ลองนำไปใช้ดูนะครับ จะเป็นประโยชน์มากสำหรับคนทำเกม ทำ Visual Effect ต่าง ๆ

Sunday, June 9, 2013

Singleton Pattern

Singleton Pattern
ในบางครั้งนั้นเราจำเป็นจะต้องใช้ Object ตัว ๆ หนึ่งแล้ว แต่เราไม่ต้องการ New Object ขึ้นมาใหม่เรื่อย ๆ ซึ่งทำให้ค่าของการบันทึกที่เคยใช้งานมาแล้ว กลับมาสู่ค่าเริ่มต้น จนกระทั่งจนกว่าโปรแกรมจะปิดไป อย่างเช่น ค่า Config ของตัวโปรแกรม หรือไม่ก็พวก Data ที่เราต้องการใช้ในระดับ Global Object ทางออกของการออกแบบ Object Singleton Pattern ก็เพื่อการนี้

หลักการง่าย ๆ คือ มันจะ New Object ขึ้นมาครั้งเดียวตลอด Life Circle ของโปรแกรมจนกว่าจะ Terminate ไป

รูปปลากรอบ (ราดพริกใส่ซอสอร่อยเหาะ)

จะเห็นได้จาก UML ว่าจะมี intance กำหนดการชี้เข้าหาตัวเอง โดยที่ getInstance จะเป็นการเรียก Object นี้เอาไปใช้

Example Code
class Singleton
{
 private static Singleton instance;
 private Singleton()
 {
  ...
 }

 public static synchronized Singleton getInstance()
 {
  if (instance == null)
   instance = new Singleton();

  return instance;
 }
 ...
 public void doSomething()
 {
  ... 
 }
}


เวลานำไปใช้งาน จะกำหนด Object ให้มีค่าเป็น static ก่อนก็ได้ และใช้ค่า instace ไปเก็บ หรือจะเรียกทั้ง .getInstace() ไปเลยก็ได้

คงได้ประโยชน์ไม่มากก็น้อยนะครับจาก Singleton Class (คลาสคนโสดมีเพียงได้แค่ 1 เดียว)

Friday, June 7, 2013

Model View Controller Programming Pattern Style

Model View Controller หรือเรียกสั้น ๆ ง่าย ๆ ว่า MVC

เป็นวิธีการจัดการระบบการเขียนโปรแกรมของเราที่เป็นระบบมากขึ้น และแพร่หลาย นิยมใช้กันมาก ๆ ตาม Framework ต่าง ๆ เดี๋ยวนี้แทบจะทุก Framework เลยก็ว่าได้นะครับ ทำไมเราต้องศึกษามันงั้นหรือ

ตามว่ากันทฤษฎีล้วน ๆ นั้น สั้น ๆ คือ แม่งง่ายครับ ไล่โค้ดกันง่ายขึ้น มีชีวิตที่ดีขึ้น แยกส่วนการทำงานแบบเห็น และเด่นชัดว่า อะไร ทำงานส่วนไหน

หลักการทำงาน ง่าย ๆ ก็คือ
Model จะมีข้อมูลต่าง ๆ อาศัยอยู่ ไม่ว่าจะเป็น Object ของ นักเรียน นักศึกษา ครู แมว ตัวเงินตัวทอง เป็นต้น
View เองนั้นจะเป็นส่วนที่ แสดงผลข้อมูล จากโมเดล และป้อนข้อมูลส่งให้ Controller
Controller คือส่วนควบคุมทุก ๆ อย่าง (เน้นนะครับว่าทุกอย่าง) ทำให้ View และ Model ทำงานด้วยกัน เป็นผู้ปิดทองหลังพระแท้จริง

Framework ที่แนะนำมาก ๆ นั้นก็คือ Spring สำหรับ Java (ส่วนมากใช้คู่กับพวก JSF และ JSP) และยังมี สำหรับที่ทำเว็บอย่างพวก PHP หรือ ASP เป็นต้น

Entry ต่อไปจะเขียนถึง OOP pattern นะค้าบบบบบบบ

object oriented programming

Object Oriented Programming หรือ OOP
คือแนวคิดของการเขียนโปรแกรมแบบ ง่าย ๆ ที่มีแบบแผน เหมาะกับทุกเพศละทุกวัย(ว่าไปนั่น)
โดยแบ่งแยก การมอง Class ที่เขียนมานั้น เป็นวัตถุ 1 ก้อน ที่มีความสามารถ ต่าง ๆ กัน แต่สิ่งของบางอย่าง ถูกผลิต มาจากสิ่งที่ต้นฉบับเดิม ภาษาที่นิยมใช้กันสุด ๆ (จริง ๆ ใช้กันทุกภาษานั่นแหล่ะ) นั่นก็คือ Java C++ C# ฯลฯ

อย่างเช่น การเรียนการสอน ในหนึ่งชั้นประกอบด้วยอะไรบ้าง
- นักเรียน
- ครู
- ห้องเรียน

สามองค์ประกอบหลักนี้ จะทำให้เกิดการเรียนการสอนขึ้นมาได้ ก็เป็น object การเรียน 1 ห้อง โดยมองว่า   1 ห้องนี้ ประกอบด้วย object ย่อย ที่ชื่อว่า นักเรียน ครู และ ห้องเรียนขึ้นมา

แนวคิดของ Object Oriented นั้น ง่ายใช่ไหมหล่ะ เพราะมันเลียนแบบสิ่งที่เรามองเห็นง่าย ๆ เองนั่นแหล่ะครับ อย่าทำให้มันยาก เดี๋ยวมันจะยาก

Note: ความรู้เพิ่มเติม แบบถ่องแท้ http://www.codeproject.com/Articles/22769/Introduction-to-Object-Oriented-Programming-Concep#OOP

Compiler

compiler (คอมไพล์เลอร์) คืออะไร? ทำไมต้องรู้จักมัน มีคำถามมากมายว่า ทำไม?

คืองี้นะครับ คอมไพล์เลอร์เนี้ย มันคือเครื่องมือแปลภาษาจากคอมพิวเตอร์ ระดับสูง เป็นระดับต่ำ ที่เรียกว่า Machine Code นั้นเอง เพื่อให้คอมพิวเตอร์ ทำตามคำสั่งที่เราเขียน ไม่ว่าจะเป็น C, Java, C++, PHP, Python เป็นต้น


หลักการ ของมันก็มีเพียงแค่ว่าง่าย ๆ มี Code ที่เขียนไว้แล้ว คอมไพล์ และเข้าสู่กระบวนการ ของไฟฟ้า เพียงแค่นั้น ไม่มีอะไรมาก เรื่องการเจาะลึก ผมไม่อยากเจาะลึกมากนัก เพราะมันก็ไม่เหมาะกับพวกเราที่ยังนู๊ป ๆ อยู่ ฮ่า ๆ