Skip to main content

Singleton Design Pattern



අද මම මගේ යාළුවන්ට පැහැදිලි කරන්න යන්නෙ ඉතාමත් පහසුවෙන් තේරුම් ගන්න පුළුවන් design pattern එකක්. ඒ තමයි Singleton design pattern එක.මේ design pattern එක අයත් වෙන්නේ creational patterns කියන කාණ්ඩයට. object නිර්මාණය කරන්න හොඳ ක්‍රමයක් තමයි මෙයින් අපිට කියලා දෙන්නේ. අපි බලමු දැන්  මොකක්දේ මේ singleton design pattern එක කියන්නෙ කියලා.

කෙටියෙන්ම විස්තර කරනවා නම් singleton design pattern එකෙන් අපි කරන්නේ අපි හදන class එකෙන් user ට අවස්ථාව දෙන්නේ එක object එකක් හදන්න විතරයි.තවත් විස්තර කරනවා නම් user class එකෙන් object එකක් refer කරන හැම අවස්ථාවකම user ට දෙන්නේ එකම එක static object එකක් විතරයි .ඒ කියන්නෙ මේ design pattern එක use කිරීමේ ප්‍රධාන අරමුණ තමයි සලකන ලද class එකකින් සැදෙන උපරිම object ගණන එකකට සීමා කිරීම.

ඔයාලට දැන්  ප්‍රශ්නයක් ඇති ඇයි අපි සාදන object එකකට සිමා කරන්නේ කියලා. මම එක ඔයාලට උදාහරණයකින් පැහැදිලි  කරන්නම්. අපි හිතමු අපි develop කරන desktop software එකකට database එක connect කරනවා කියලා. අපේ software එකේ එකම database එකකට user details view කරනකොට , ඒ වගේම new data add කරන හෙම වෙලාවකම software එකට database connection එකෙන් object එක ගානෙ හැදුනොත් එක අපේ software එකේ ගුණාත්මකභාවයට හොඳ මදි . අන්න ඒ වගේ අවස්ථාවලදී අපි මේ singleton කියන design pattern එක තමයි use කරන්නේ. මම ඒ ඔයාලට කිවේ singaleton design pattern එක practically භාවිත කරන අවස්ථාවක්.




අපි දැන්  බලමු කොහොමද මේ singleton design pattern එක අපි implement කරන්නේ කියලා. class diagram මම දැන්නම්.





පියවර 1
 මුලින්ම අපි SingleObject කියන class එක නිර්මාණය කරමු.

SingleObject.java

ඔයාලට පේනවා ඇති SingleObject කියන class එකේ constructor එකට  private කියන access modifier එක භාවිත  කරලා තියෙනවා. එහෙම constructor එක private කිරීමේ අරමුණ තමයි new කියන keyword එක use කරලා object නිර්මාණය කිරිමට තියෙන අවස්ථාව ඉවත් කිරීම.

තව ඔයාලට පේනවා ඇති private static instance එකක්  හදල තියෙනවා.ඒ වගේම static instance එක access කරන්න getInstance() කියලා static method එකක් හදල තියෙනවා. අපි එහෙම static instance ,method හැදුවේ static දේවල් හැදෙන්නේ class එකකට එක බැගින් නිසා.

මම හිතනවා ඔයාලට මේ class එක ගෙන අවබෝධයක් දැන් ලැබෙන්න ඇති  කියලා.අපි දන් 2වෙනි පියවරට යමු.

පියවර 2
දැන් SingletonPatternDemo කියන class එක නිර්මාණය කරමු.

SingletonPatternDemo.java 

ඔයාලට පේනවා ඇති අපි සාමාන්‍යයෙන් object එකක හදන විදිහට නෙවෙයි SingleObject කියන class එකෙන් object එක හදල තියෙන්නේ. එකට හේතුව මම ඉහල පැහැදිලි කල. අපි new කියන keyword එක use කරලා object හදන්න පුළුවන් හැකියාව ඉවත් කලානේ constructor  එක private කරලා. දැන්  එහෙම object එකක් හැදුව  නම් අපිට compile time error එකක් එනවා.
අපිට පුළුවන් getInstance()  කියන method එක use කරලා object එක හදා ගන්න.

Output




මම හිතනවා ඔයාලට singleton design pattern එක ගෙන හොඳ අවබෝධයක් ලැබුන  කියලා. අපි බලමු ඇත්තතටම එක object එකක්ම විතරක්ද  හැදෙන්න අවස්ථාව දෙන්නේ කියලා මේ exercise එක කරලා. එතකොට ඔයාලට තවත් පැහැදිලිවෙයි කියලා මම හිතනවා.

SingletonPatternDemo.java 

අපි මේ class එකේ object1 කියලයි object2 කියලයි instance object 2ක් හදල ඒවායේ object reference 2ත්  වෙන වෙනම ප්‍රින්ට් කරලා තියෙනවා. අපි බලමු කොයි  වගේ output එකක්ද ලැබෙන්නෙ  කියලා අපිට.

Output
බලන්න object1,object2 කියලා reference 2ක් use කලත් අපිට ඒ 2ම object reference එක ඒකමයි output එක විදිහට ලැබිලා  තියෙන්නේ. 
singleton.SingleObject@15db9742 කියලයි 2ම ඇවිත් තියෙන්නේ.


ඉතින් යාලුවනේ දන් නම් ඔයාලට singleton design pattern එක හොඳටම තේරුම් යන්න ඇති. අපි ඊළඟ ලිපියෙන් MVC and singleton design patterns 2ම use කරලා project එකක කරන හැටි බලමු. එහෙනම් මගේ යාලුවනේ අපි ඊළඟ post එකෙන් හමුවෙමු...........................................

Comments

Popular posts from this blog

IoT Project - Smart Crop Seer 1.0

Smart C rop S eer 1 .0         Team XitorS Our Team Members Kelum Perera Visura De Silva Wageesha Ishani Charitha Wickramanayake Main purpose of the project   So, the main purpose of this project is to develop an IoT  device and and mobile application which can be used by anyone who has a very little knowledge in technology to aware of soil properties, environmental properties and demand in market.     Main objectives of the project Following would be the main objectives of the project.   To indicate availability of Nitrogen, Phosphorous and Potassium in the soil (whether nutrients are low, average or high)   To indicate moisture level in soil To indicate humidity of surrounding air  To indicate temperature of surrounding air  To show a list of most suitable crops to cultivate  To identify two agricultural zones to conduct the research To identify m...

OOP -Introduction

අපි මුලින් බලමු මොකක්ද මේ Object Oriented Programming concept එක කියන්නෙ කියලා. OOP කියන concept එක බිහිවෙන්න කලින් අපි භාවිත කලේ Structured Programming කියන concept එක. නමුත්  Structured Programming concept එක භාවිත කරලා මහපරිමාණ software නිර්මාණය කරන කොට programmers ලට නොයෙකුත් ප්‍රශ්න වලට මුහුණ දීමට සිදුවුණා. ඒ කියන්නේ structured concept එකෙන්  මහපරිමාණ software develop කරනකොට එකම class එකක සියළුම codes ලියන නිසා code වල errors , bugs ආවහම errors සහිත coding lines හඳුනාගෙන ඒවා නැවත සකස් කිරීමට‍ විශාල කාලයක් වගේම විශාල    වෙහෙසක් programmer ට දරන්න සිදුවෙනවා.  මොහොතකට හිතල බලන්න යාලුවනේ අපි structured programming concept එක use කරලා Foodcity එකකට software එකක් develop කරනවා කියලා. ඒ programme එකේ code lines විශාල ප්‍රමාණයක් තියෙනවා. ඉතින් ඒ වගේ අවස්ථාවක errors ආවහම , ඒ වගේම programmer  develop කරපු software එකට අලුතින් new parts add කරන්න අවශ්‍යයි කියල අපේ client කීවහම නැවත new parts add කිරීමේදී software එක develop කිරීමේදී වැය වුන කාලය , ඒ සඳහා c...

MVC Design Pattern (Model-View-Controller)

ඉතින් යාලුවනේ මම අද ඔයාලට කියන්න යන්නෙ software industrial එකට ගොඩක් වැදගත් වෙන design pattern එකක්. ඒ තමයි MVC එහෙමත් නැත්නම් Model-View-Controller කියන design pattern එක. අපි දැන්  බලමු මොනවද මේ model , view ,controller කියන ඒවායින් කියවෙන්නේ කියලා. Model  : අපි model එකක් කියලා සාමාන්‍යයෙන් කියන්නෙ object එකකට.අපේ program එකේ   ඇතුලත වෙන ක්‍රියාවලිය අපි ඉදිරිපත් කරන්නේ model එකකින්.  View : අපි දැන් බලමු view එකක කියන්නෙ මොකක්දේ කියලා. view එක කියන්නෙ model එකෙ       තියෙන දේවල් user ට පෙන්වන්නේ එහෙමත්මේ නැත්නම් visualise කරන්නේ මේ  view එක හරහා තමයි. Controller : අපි controller කියලා කියන්නෙ model එකේ වෙන වෙනස්කම් view එකේ update   කරන්නේ ඒවගේම model එකයි view එකයි control කරන්නේ මේ controller එකෙන් තමයි. මේ design pattern එකේ මේ කොටසේ තමයි business logic එක අපි ලියන්නේ. හරියට අපේ brain එක වගේ තමයි controller එක ක්‍රියාකරන්නේ.  මේ MVC design pattern එකේ තියෙන ප්‍රධාන වාසියක් තමයි අපි program එකේ ඔක්කොම codes ටික එකම...