วันพฤหัสบดีที่ 23 มิถุนายน พ.ศ. 2554

Design Pattern "Eclipse"

Singleton  Pattern
องค์ประกอบเชิงโครงสร้างของ Singleton
Singleton
<<static>>-instance : Singleton
<<static>>+getInstance
                                    ภาพ  Class Diagram  แสดงองค์ประกอบเชิงโครงสร้างของ singleton

การทำงานมีดังนี้
1 )  กิจกรรมจะเริ่มเมื่อ object  ของ  class  ใด ๆ  ทำการเรียก Method getInstance()  ของ Singleton
2)  Singleton  ตรวจสอบว่า  atribuite  instance  ของตนเองได้รับการสร้างแล้วหรือยัง  ถ้ายัง  Singleton จะสร้าง  Attribute  instance  ขึ้น  แต่ถ้า instance ถูกสร้างขึ้นแล้ว Singleton จะไม่ดำเนินการใด ๆ 

ตัวอย่างการใช้งาน  Singleton
ความต้องการ( Requirements)
                ในระบบเครือข่ายขนาดเล็กระบบหนึ่ง  ซึ่งมีอุปกรณ์นานาชนิดต่อเชื่อมกันอย่างเป็นระบบ  ระบบมี printer  เพียงตัวเดียวให้ใช้ร่วมกันในระบบ  ดังนั้น  ในช่วงเวลาใดเวลาหนึ่ง  printer จะใช้งานเพียงงานเดียว  ดังนั้นระบบจึงต้องการสิ่งที่ช่วยควบคุมได้ว่าในเวลาหนึ่ง ๆ จะมีผู้เข้ามาใช้งาน printer  ได้เพียงคนเดียวเท่านั้น
จากความต้องการของระบบ  เราสามารถออกแบบโครงสร้างของ  printer  ได้ดังรูป
รูปแสดง class diagram  สำหรับระบบ “Single  Resoure”

Class Printer  มีรายละเอียดดังต่อไปนี้
  • Instance  เป็น  static attribute  ที่มี  type  เป็น  printer
  •   Name  เป็น  static  attribute ซึ่งเป็น  attribute  ที่ระบุชื่อของ  object  ของ  printer ที่ถูกสร้างขึ้น
  •  getInstance()  เป็น method ที่ทำหน้าที่สร้าง  attribute  instance  โดยจะตรวจสอบก่อนว่า instance ถูกสร้างแล้วหนือยัง  ถ้ายังจะถูกสร้างขึ้นพร้อมกับถูกตั้งชื่อ เมื่อ instance  ถูกสร้างขึ้นแล้วจะถูกส่งไปยังผู้เรียกเพื่อนำไปใช้งานต่อไป
  •  returnInstance()  เป็น method  ที่ทำหน้าที่คืน instance  กลับมาสู่ printer โดยเมื่อได้รับคืนมาแล้ว instance จะถูกทำลายทิ้ง
  •  getName()  เป็น  method  ที่ทำหน้าที่อ่านชื่อของ  object  ของ  printte

ตัวอย่างการสร้าง  package และการ  run code
      
-                   
- 
-   
 

หลังจากนั้นทำการสร้าง clsss  ภายใน package  สำหรับในที่นี้จะทำการสร้าง  class 2 class  คือ 
Class Printerclient  และ  class Printer

Code  class PrinterClient.java
 


Code  class Printer.java
 


ผลลัพธ์จากการ run Program



ไม่มีความคิดเห็น:

แสดงความคิดเห็น