කර්මාන්තශාලා රටා ප්රචලිත වන්නේ "නව" මූල පදය භාවිතා කිරීම නරක යැයි "සී-ශෛලියේ" භාෂාවල (සී / සී ++, සී #, ජාවා) කෝඩරයන් අතර ඇති පාහේ විශ්වාස කළ හැකි විශ්වාසයකින් ය. අවම වශයෙන් මධ්යගත). මෙය අනෙක් අතට තනි වගකීම් මූලධර්මය (SOLID හි "S") සහ පරායත්ත ප්රතිලෝම මූලධර්මය ("D") පිළිබඳ අතිශය දැඩි අර්ථ නිරූපණයකින් පැමිණේ. සරලව කිවහොත්, SRP පවසන්නේ ඉතා මැනවින් කේත වස්තුවකට “වෙනස් වීමට එක් හේතුවක්” තිබිය යුතු අතර එකක් පමණක්; “වෙනස් වීමට හේතුව” යනු එම වස්තුවේ කේන්ද්රීය අරමුණයි, කේත පදනමේ එහි “වගකීම” සහ කේත වෙනස් කිරීම අවශ්ය වෙනත් ඕනෑම දෙයකට එම පන්ති ගොනුව විවෘත කිරීම අවශ්ය නොවේ. ඩීඅයිපී ඊටත් වඩා සරල ය; කේත වස්තුවක් කිසි විටෙකත් වෙනත් කොන්ක්රීට් වස්තුවක් මත රඳා නොපවතී,
උදාහරණයක් ලෙස, "නව" සහ පොදු ඉදිකිරීම්කරුවෙකු භාවිතා කිරීමෙන්, ඔබ ඇමතුම් කේතය නිශ්චිත කොන්ක්රීට් පන්තියක නිශ්චිත ඉදිකිරීම් ක්රමයකට සම්බන්ධ කරයි. පංතියේ MyFooObject පවතින බව ඔබේ කේතයට දැන් දැනගත යුතු අතර, නූලක් සහ int එකක් ගන්නා ඉදිකිරීම්කරුවෙකු සිටී. එම ඉදිකිරීම්කරුට කවදා හෝ වැඩි තොරතුරු අවශ්ය නම්, ඔබ දැන් ලියන තොරතුරු ඇතුළුව එම තොරතුරු ලබා දීම සඳහා ඉදිකිරීම්කරුගේ සියලු භාවිතයන් යාවත්කාලීන කළ යුතු අතර, එබැවින් ඔවුන්ට ඇතුල් වීමට වලංගු යමක් තිබිය යුතු අතර, ඒ නිසා ඔවුන් සතුව තිබිය යුතුය එය ලබා ගැනීම සඳහා එය වෙනස් කිරීම (පරිභෝජනය කරන වස්තූන් සඳහා වැඩි වගකීම් එකතු කිරීම). මීට අමතරව, MyFooObject කවදා හෝ කේතපදය තුළ BetterFooObject මගින් ප්රතිස්ථාපනය කරන්නේ නම්, පැරණි පන්තිය වෙනුවට නව වස්තුව තැනීම සඳහා පැරණි පන්තියේ සියලුම භාවිතයන් වෙනස් විය යුතුය.
එබැවින්, ඒ වෙනුවට, MyFooObject හි සියලුම පාරිභෝගිකයින් කෙලින්ම "IFooObject" මත රඳා පැවතිය යුතුය, එය MyFooObject ඇතුළු පන්ති ක්රියාත්මක කිරීමේ හැසිරීම නිර්වචනය කරයි. දැන්, IFooObjects හි පාරිභෝගිකයින්ට IFooObject එකක් සෑදිය නොහැක (විශේෂිත කොන්ක්රීට් පංතියක් IFooObject බව ඔවුන්ට දැනුමක් නොමැතිව), එබැවින් ඒ වෙනුවට ඔවුන්ට IFooObject- ක්රියාත්මක කිරීමේ පන්තියක් හෝ ක්රමයක් පිළිබඳ උදාහරණයක් ලබා දිය යුතුය. අපගේ උපභාෂාවෙන් සාමාන්යයෙන් කර්මාන්ත ශාලාවක් ලෙස හැඳින්වෙන තත්වය සඳහා නිවැරදි IFooObject නිර්මාණය කරන්නේ කෙසේදැයි දැන ගැනීමේ වගකීම ඇති වෙනත් වස්තුවකින් පිටතින්.
දැන්, න්යාය යථාර්ථය සපුරාලන තැන මෙන්න; වස්තුවක හැකි කිසි සියලු කාලය වෙනස්, සියලුම වර්ගයේ සඳහා වසා. උදාහරණයක් ලෙස, IFooObject දැන් කේත පදනමේ අතිරේක කේත වස්තුවක් වන අතර එය පාරිභෝගිකයින්ට අවශ්ය අතුරු මුහුණත හෝ IFooObjects ක්රියාත්මක කිරීම වෙනස් වන සෑම විටම වෙනස් විය යුතුය. මෙම සාරාංශය හරහා වස්තූන් එකිනෙකා සමඟ අන්තර්ක්රියා කරන ආකාරය වෙනස් කිරීම සඳහා නව මට්ටමේ සංකීර්ණතාවයක් හඳුන්වා දෙයි. ඊට අමතරව, අතුරු මුහුණත නව එකක් මගින් ප්රතිස්ථාපනය කළ හොත් පාරිභෝගිකයින්ට තවමත් වෙනස් වීමට සිදුවනු ඇත.
සැලසුම විශ්ලේෂණය කිරීමෙන් සහ නිශ්චිත ආකාරයකින් වෙනස් වීමට බොහෝ දුරට ඉඩ ඇති ස්ථාන සොයා ගැනීමෙන් සහ ඒවා වඩාත් ඉවසිලිවන්තව ප්රතිනිර්මාණය කිරීමෙන් SOLID සමඟ YAGNI ("ඔබට එය අවශ්ය නොවේ") සමතුලිත කරන්නේ කෙසේදැයි හොඳ කෝඩරයක් දනී. , වෙනස් බව වර්ගය එම නඩුව "ඔබ නිසා ය එය අවශ්ය වෙන්නේ".