Friday, October 8, 2010

Java සමග Software Design Patterns (4 කොටස | Proxy Pattern)

බොහෝ පරිගණක වැඩසටහන් සැලසුම් කිරීමේදී අපට පද්ධතියෙන් පරිභාහිර සම්පත්(resources)  අප සැලසුම් කරන වැඩසටහන තුල භාවිතයට ගැනීමට සිදුවේ. උදාහරණ වශයෙන් ජාල සම්බන්දතා(network connections), files, පරිගණකයේ සසම්භාවී මතකය තුල පවතින විශාල වස්තුවක්(a large object in memory) හෝ සම්පත් අපතේ යෑම නිසා duplicate  කල නොහැකි අනෙකුත් ඕනෑම resource එකක් සැලකිය හැකියි.

මෙවැනි අවස්ථාවලදී අප සකස්කරන සැලසුම අසාර්ථක එකක් වුවහොත් එය කෙලවර වන්නේ අධික ලෙස bandwidth එක භාවිතා කරන හෝ පරිගණක මතකය අපතේ යවන හෝ කාර්‍යක්ෂමතාව අතින් ඉතාම අඩු මට්ටමක පරිගණක වැඩසටහනකින්. ප්‍රොක්සි (proxy design pattern) යනු මෙවැනි අවස්ථාවන්හිදී සාර්ථකව apply කල හැකි design pattern එකකි.

Thursday, October 7, 2010

Java සමග Software Design Patterns (3 කොටස | Facade Pattern)

ෆැෂාඩ් | Facade යනු structural ආකාරයේ design pattern එකකි. මෙමගින් කිසියම් සංකීර්ණ උප පද්ධතියක(sub system) lower level classes invoke කිරීම මගින් යම් කාර්‍යයක් සිදුකිරගැනීම සඳහා higher level interface එකක් සපයනු ලබයි. මෙලෙය facade pattern එක යොදමින් කිසියම් පද්ධතියක් සැලසුම් කිරීම නිසා එම පද්ධතියේ coupling යන ගුණය අඩුවීම සිදුවේ එනම් එම පද්ධතියේ ස්ථායීතාවය කෙරෙහි එය සුභදායක ලෙස බලපායි. මීට අමතරව coupling ගුණය අඩුවීම යම් පද්ධතියක කාර්‍යක්ෂමතාවය වැඩිවීම පිනිසද හේතුවේ. යම් system එකකට facade pattern එක apply කල පසු එතුල පවතින සංකීර්ණ sub system එකක් කිසියම් client class කිහිපයක් මගින් access කරනුයේ facade එක හරහාවේ. එමගින් ඉතා විශාල වාසි එම පද්ධතියට අත්වේ. ඉන් එක් වාසියක් නම් client ගේ වෙනසක් නොවන පරිදි සංකීර්ණ sub system එක තුල වෙනස්කම් සිදුලහැකි වීමයි. එමගින් අප විසින් සැලසුම් කරන පද්ධතිය අවුල් ජාලයක් වීම වලකනු ලබයි.

Wednesday, October 6, 2010

Java සමග Software Design Patterns (2 කොටස | Adapter Pattern)

Adapter නම් design pattern එක structural ආකාරයේ pattern එකකි. ලියන ලද කිසියම් program code එකක් දැනට පවතින වෙනත් නොගැලපෙන(incompatible) code-base එකකට(උදා: google maps API, twitter API) සම්බන්ද කිරීමේදී මෙම design pattern එක apply කල හැකිය. මෙහිදී සිදුකරනුයේ විධිමත් ක්‍රමයකට අපේ program එකට පරිභාහිර code-base එක call කිරීමට class structure එකක් සෑදීමයි. සාමාන්‍යයෙන් අප විසින් සකසන මෙම class තුලදී process එකක් නොපවතී ඒ වෙනුවට එම class මගින් සිදුකරනුයේ අදාලා කාර්‍යය සිදුකරගැනීම පිනිස පවතින code-base එක call කිරීමයි.

 අපි දැන් බලමු adapter pattern එක සඳහා අදාල class diagram එක
ඔබට UML පිළිබඳ යම් අවබෝධයක් ඇත්නම් ඉහත class diagram එක මගින් adapter pattern එකෙහි ව්‍යුහය පිලිබඳ මනා වැටහීමක් ලැබෙනු ඇත. ඔබට UML(Unified Modeling Language) පිළිබඳ අවබෝධයක් නොමැතිනම් මෙම tutorial එක භාගත කරගෙන හොඳින් අධ්‍යයනය කරන්න. ඉන්පසු ඔබට ඉතා පහසුවෙන් මෙම UML diagram එක සහ ඉදිරි පාඩම් වලදී ඉදිරිපත් කෙරෙන UML diagrams වටහාගත හැකිවනු ඇත.

Java සමග Software Design Patterns (1 කොටස)

කිසියම් පරිගණක භාෂාවක් යොදාගෙන මෘදුකාංග නිපදවීමේදී අප විසින් කිසියම් සැලසුමක් මුලින් සකස් කල යුතු වනවා. මෙහිදී අදාල සැලැස්ම ඉතා හොඳ එකක් වීම ඉතා වැදගත්. හොඳ මෘදුකාංග සැලසුමක් නිසා කේතකරණය මෙන්ම මෘදුකාංගයේ නව යාවත් කාලීන කිරීම් පුලුල් කිරීම් ආදිය පහසු වීම සිදුවනවා.
හොඳ design එකක් සාදාගැනීම සඳහා භාවිතාකරන එක තාක්ෂණයක් තමයි software design patterns කියල කියන්නෙ. කිසියම් මෘදුකාංගයක් සැලකීමේදී එහි design pattern 1කට වැඩි සංබ්‍යාවක් තිබීමට පුලුවන්.
software design pattern සඳහා වන Wikipedia හි අර්ථ දැක්වීම

"A general reusable solution    to a commonly occurring problem    in software design"

සරළව විස්තර කරන්නේ නම්. design pattern එකක් යනු විවිධ අවස්ථාවන් සඳහා යොදාගත හැකිවන පටිදි කිසියම් ගැටලුවක් විසඳන ආකාරයයි. එම නිසා ඕනෑම software pattern එකක් සැලකූ විට ඒය design pattern එකක් නොවිය හැකියි.
උදා: algorithm(sorting,encrypting,compressing..etc) සහ data structures(queues, linked lists, stacks...etc) යන ඒවා design patterns ලෙස නොසැලකේ.