Jump to content


Windows Server 2012

- - - - -

บทความ(อังกฤษ)ออน์ไลน์: Flyweight Pattern


  • Please log in to reply
3 replies to this topic

#1 นายข้าวโพดหวาน

นายข้าวโพดหวาน

    Committee

  • Committee
  • 7138 posts

Posted 30 July 2003 - 05:13 AM

เพื่อนๆรู้จักแพทเทิร์นตัวนี้หรือยังครับ เป็นแพทเทิร์นที่สามารถนำมาใช้ลดจำนวนออปเจ็คซ้ำๆที่ต้องสร้างจำนวนมากให้น้อยลงด้วย
การใช้ออปเจ็คร่วมกัน ทำให้ลดคการใช้หน่วยความจำและเวลาในการสร้างออปเจ็คเหล่านี้ เหมาะสำหรับการใช้กับ JTable หรือ JTree ที่ต้องเก็บ cell หรือ node ที่มีจำนวนมากๆ รายละเอียดลองไปอ่านที่บทความนี้ครับ

http://www.javaworld...gnpatterns.html

ถ้าสงสัยหรือมีความเห็นเพิ่มเติม ลองมาคุยกันในกระทู้นี้ครับ

#2 lsomchai

lsomchai

    Committee

  • Committee
  • 2427 posts

Posted 30 July 2003 - 06:57 AM

อ่านจบแล้วครับ บางครั้งผมก็ใช้ pattern นี้แต่ไม่รู้ว่ามันมีชื่อว่า Flyweight

สำหรับการใช้ String.intern() นั้น ผมสงสัยว่าทำไมการรวม String โดย default ถึงไม่ทำ Flyweight เขามีเหตุผลอะไร? ถ้าเราต้องมานั่งเรียก String.intern() เองก็เท่ากับว่าเราต้อง manual optimize เองตลอดหรือ? แต่ก็เข้าใจว่า การที่ต้องตรวจสอบ String pool ตลอดคงไม่สนุกแน่

#3

  • Guests

Posted 01 August 2003 - 10:26 PM

String เป็นของที่ใช้มาก แล้วก็เป็นแบบใช้แล้วทิ้งนะครับ สร้างใหม่ขึ้นมาใช้เลย จะเร็วกว่าเข้าไปหาใน Pool เพราะจะต้องเสียเวลาในการหามาก

จุดสำคัญของ Flyweight คือการทำงานร่วมกับ Immutable Object ถ้าตัว Object ถูกออกแบบมาให้ไม่สามารถเปลี่ยนแปลงได้หลังจากที่ถูกสร้างขึ้นมา ก็สามารถนำมาแชร์ได้ ถ้าต้องการเปลี่ยนแปลง Object ก็อาจใช้วิธีแยก State เป็น Intrinsic และ Extensic State อย่างที่ Article บอก หรือไม่ก็ทำ Copy-On-Write เพื่อแยกออกมาเป็น 2 Objects แทนนะครับ

อีกจุดนึงเลยก็คือ Object ที่นิยมนำมาใช้กับ Flyweight มักเป็นพวก HeveyWeight ที่มีข้อมูลมาก ๆ หรือที่ใช้เวลาสร้างนาน ๆ เช่น Object ที่ต้องโหลดเอา State มาจาก Database เป็นต้น

#4 นายข้าวโพดหวาน

นายข้าวโพดหวาน

    Committee

  • Committee
  • 7138 posts

Posted 02 August 2003 - 07:27 AM

เห็นด้วยกับคุณโฮ่ๆครับ

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




0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users