Community project by students of the Faculty of Information Technology, University of Moratuwa, Sri Lanka.

Design Patterns Lesson 2 – සිංගල්ටන් රටාව (Singleton Pattern)

Singleton pattern එක කියන්නෙ ජාවා වල තිබෙන තේරුම් ගැනීමට ඉතා පහසු design pattern එකකි. මෙම pattern එක අයත් වන්නේ අපි කලින් පාඩමෙන් කතා කළ Creational Patterns යටතටයි. එබැවින් මෙම singleton pattern එක මගින් අපට කියා දෙන්නේ වස්තු නිර්මාණය කිරීමට ඉතා හොද ක්‍රමයකි. (one of the best way to create an object)

අරමුණ: සලකන ලද class එකකින් සැදෙන උපරිම object ගණන එකකට සීමා කිරීමයි.

මේ අතර new keyword එක යොදාගෙන වස්තු සෑදීම(instantiating objects) වෙනුවට අදාල class එක මගින් සෑදෙන වස්තුව පරිශීලණය(access) කිරීමට ක්‍රමයක් මෙමගින් ලබා දෙයි.

මෙම pattern එක ක්‍රියාවට නැංවීමට(implement) කිරීමට අපට අවශ්‍ය වන්නේ එක් ජාවා class එකක් පමණි.

 

ක්‍රියාවටනැංවීම (Implementation)

අපි දැන් බලමු singleton class එකක් නිර්මාණය කරන ආකාරය. අපි එම class එක MySigleton.class ලෙස නම් කරමු.

පළමුවෙන් මෙම class එකේ constructor එක private කර ගත යුතුය. එමගින් සිදුවන්නේ new keyword එක යොදාගෙන objects instantiate කිරීමට ඇති හැකියාව ඉවත් කිරීමයි.

ඉන් පසුව අප එම class එකෙහිම static private instance එකක් සාදා ගන්නවා. එම static instance එක access කිරීමට getInstance() යනුවෙන් method එකක්ද සාදා ගන්නවා.

අප විසින් මෙහිදී static instance සහ method භාවිත කිරීමට හේතුව වන්නේ static දේවල් සෑදෙන්නේ මුලු class එකටම එක බැගින් වීම නිසයි.

දැන් පහත දී ඇති උදාහරණය වෙත අවදානය යොමු කරන්න.

දැන් අපි නිර්මාණය කරන ලද class එක ක්‍රියාත්මක කර බලමු.

දැන් ඔබට පැහැදිලි ඇති මෙම singleton pattern එක යොදාගැනීමේ අරමුණ. ඇත්තෙන්ම මෙම singleton pattern එකේ විවිධ ආකාරයන් තිබෙනවා. ඒ අතරින් ඉහත අප උදාහරණයට ගනු ලැබුවේ Eager Initialization නැමති singleton ආකාරයයි.

Eager Initialization නැමති ඉහත ආකාරයේදී singleton object එක class එක load වන අවස්ථාවේදීම සෑදේ.

නමුත් Lazy Initialization නැමති singleton ක්‍රමයේ දී object එක instantiate වන්නේ getInstance() method එක invoke කරන අවස්ථාවේ දී ය. එය පහත උදාහරණයෙන් දැක්වේ.

මෙම ආකාර 2 ට අමතරව singleton pattern එක implement කරන ආකාර තවත් තිබේ.

  1. Static block initialization
  2. Thread Safe Singleton
  3. Bill Pugh Singleton Implementation
  4. Using Reflection to destroy Singleton Pattern
  5. Enum Singleton
  6. Serialization and Singleton

මේවා පිළිබදව අධ්‍යනය කිරීම ඔබට භාර කරමින් මෙම singleton pattern පාඩම අවසන් කරනවා. ඊළග පාඩමෙන් තවත් design pattern එකක් අපි ඉගෙන ගනිමු.

Comments
  1. Ishan

Leave a Reply

Your email address will not be published. Required fields are marked *