நிரலி வடிவமைப்பியல்

***வடிவ முறைகள்: மறுமுறை உபயோகிக்கக் கூடிய பொருள் சார் மென்பொருளின் உட்பொருட்கள்'' '''  (ஐ.எஸ்.பி.என் 0-201-63361-2) என்பது மென்பொருள் வடிவமைப்பில் ஏற்படும் பொதுவான பிரச்சனைகளுக்கான தீர்வுகளை விவரிக்கும் ஒரு [[மென்பொருள் பொறியியல்]] புத்தகம். இந்த புத்தகத்தின் ஆசிரியர்கள் எரிக் காமா, ரிச்சர்டு ஹெல்ம், ரால்ஃப் ஜான்சன் மற்றும் ஜான் லிசைடஸ். இதற்கு கிரேடி ப்ரூச் முன்னுரை எழுதியுள்ளார். இவர்கள் ***கேங்க் ஆஃப் ஃபோர்* *'  அல்லது **''GoF'' **  என்று பொதுவாக குறிப்பிடப்படுகின்றனர். புத்தகம் இரண்டு பாகங்களாகப் பிரிக்கப்பட்டுள்ளது, முதல் இரண்டு அத்தியாயங்கள் பொருள் சார் நிரலாக்கலின் பயன்கள் மற்றும் குறைபாடுகளைப் பற்றி கண்டறிகிறது மற்றும் மீதமுள்ள மற்ற அத்தியாங்கள் 23 பிரபல மென்பொருள் வடிவ முறைகள் பற்றி விவரிக்கின்றது. இந்த புத்தகத்தில் C++ மற்றும் ஸ்மால்டாக் ஆகியவற்றிலிருந்து உதாரணங்களும் கொடுக்கப்பட்டுள்ளது. 
இது ஒரு ஜோல்ட் உற்பத்தித் திறன் விருது மற்றும் மென்பொருள் உருவாக்கல் உற்பத்தித்திறன் விருது ஆகியவற்றை 1994ம் ஆண்டு பெற்றது.

இந்த புத்தகத்தின் அசல் வெளியீட்டு தேதி அக்டோபர் 21, 1994. 1995ம் ஆண்டிற்கான காப்புரிமையோடு வெளியிடப்பட்டுள்ளது. ஏப்ரல் 2007ன் படி, இந்த புத்தகம் அதன் 36வது பதிப்பில் உள்ளது. அக்டோபர் 1994ம் ஆண்டு ஆரிகான், போர்ட்லாண்டில் நடந்த ஓ.ஓ.பீ.எஸ்.எல்.ஏ கூட்டத்தில் முதன் முறையாக இந்த புத்தகம் பொது மக்களுக்குக் கிடைக்கும் வகையில் செய்யப்பட்டது. மென்பொருள் பொறியியல் துறையில் இந்த புத்தகத்தின் தாக்கம் அதிகமாக இருப்பதாகவும் பொருள் சார் வடிவ கோட்பாடுகளுக்கும் பயிற்சிக்குமான மிகப் பெரிய முக்கியமான வளமாகவும் இந்த புத்தகம் கருதப்படுகிறது. ஆங்கிலம் மற்றும் 13 மற்ற மொழிகளில் 500,000க்கும் மேற்பட்ட பிரதிகள் விற்கப்பட்டுள்ளன.

## அறிமுகம், அத்தியாயம் 1
அத்தியாயம் 1ல் ஆசிரியர்களின் அனுபவங்களின் அடிப்படையில் பொருள் சார் வடிவமைப்பு முறைகளைப் பற்றி ஆலோசிக்கப்பட்டுள்ளது. இதன் மூலம் ஒரு நல்ல பொருள் சார் மென்பொருள் வடிவம் உருவாகும் என்று அவர்கள் கருதினர். இதில் அடங்குபவை:

* "இடமுகப்புக்கான நிரல், **செயல்படுத்துதலுக்காக**  அல்ல." (கேங்க் ஆஃப் ஃபோர் 1995:18)
* "'பிரிவு பெறல்’ என்பதை விட ‘பொருள் அமைப்பிற்கு’ சாதகமாக இருத்தல்." (கேங்க் ஆஃப் ஃபோர் 1995:20)

செயல்படுத்துதலுக்குப் பதிலாக இடமுகப்புகளின் பயன்களாக கீழ்கண்டவற்றை ஆசிரியர்கள் கூறுகின்றனர்:

* இடமுகப்புக்கு ஏற்றவாறு பொருட்கள் இருக்கும் வரையில் உபயோகிப்பவர்கள் தாங்கள் உபயோகிக்கும் குறிப்பிட்ட பிரிவுகள் பற்றி தெரியாமலேயே இருப்பர்.
* இந்த பொருட்களை செயல்படுத்தும் பிரிவுகள் குறித்து உபயோகிப்பவர்கள் தெரியாமலேயே இருப்பர்; இடமுகப்புகளை வரையறுக்கும் சுருக்கப் பிரிவுகளை மட்டுமே உபயோகிப்பவர்கள் அறிந்திருப்பர்.

இடமுகப்பின் உபயோகம் தீவிர இணைத்தல் மற்றும் பல்லுருவத் தோற்றம் ஆகியவற்றிற்கு வழி வகுக்கும். இவை பொருள் சார் நிரலாக்கலுக்கு மிகவும் முக்கியமானவர்.

பெறுதல் என்பதை ஆசியர்கள் *ஒயிட்-பாக்ஸ் ரீயூஸ்*  என்று குறிப்பிடுகின்றனர்.
இதில் ஒயிட் பாக்ஸ் என்பது தெரியக் கூடிய வகையில் இருப்பதைக் குறிக்கிறது. ஏனெனில், துணை பிரிவுகளுக்கு, அதன் மூலப் பிரிவுகளின் உட்பொருட்கள் தெரியும் படி இருக்கும். மாறாக, பொருள் அமைப்பை (மற்ற பொருட்களிடம் இருந்து குறிப்புகளைப் பெறும் பொருட்கள் செயல்படுத்தப்படும் நேரத்தில், நன்றாக வரையறுக்கப்பட்ட இடமுகப்புகளைக் கொண்ட பொருட்களை உபயோகித்தல்)
அவர்கள் *பிளாக் பாக்ஸ் ரீயூஸ்*  என்று குறிப்பிடுகின்றனர். அமைக்கப்பட்ட பொருட்களின் உட்புற விவரங்கள் அவற்றை உபயோகிக்கும் குறியீடுகளில் தெரிய வேண்டிய அவசியம் இல்லை.

பெறுதல் மற்றும் கூட்டடைவுக்கிடையேயான வித்தியாசங்களை ஆசிரியர்கள் ஆலோசிக்கின்றனர். பின்னர் அவர்களின் அனுபவத்தின் படி, வடிவமைப்பாளர்கள் பெறுதல் என்பதை அதிகமாக உபயோகிக்கின்றனர் எனக் கூறுகின்றனர் (கேங்க் ஆஃப் ஃபோர் 1995:20). இதன் அபாயம் கீழ்கண்டவாறு குறிப்பிடப்படுகிறது:

:"மூலத்தின் செயல்பாட்டை துணைப் பிரிவுக்கும் பெறுதல் வெளிப்படுத்துவதால் பொதுவாக ‘பெறுதல் கூட்டடைப்பை உடைக்கிறது’ எனக் கூறப்படுகிறது”. (கேங்க் ஆஃப் ஃபோர் 1995:19)

மூலத்தின் செயலபடுத்துதலில் செய்யும் மாற்றங்கள் அதன் உட்பிரிவுகளின் செயல்பாட்டிலும் மாற்றங்களை வலியுறுத்தும் படியாக துணை பிரிவுகளின் செயல்பாடு மூலத்தின் செயல்பாட்டோடு தீவிரமாக இணைந்து விடும் என்று அவர்கள் எச்சரிக்கை செய்கின்றனர். மேலும், இதனை தவிர்க்கும் ஒரு வழி முறை சுருக்கப் பிரிவுகளிடம் இருந்து பெறுவது மட்டும் தான் என்றும் கூறுகின்றனர் –ஆனால், இதில் மிகக் குறைந்த அளவு குறியீடுகளின் மறு உபயோகம் தான் உள்ளது என்றும் சுட்டிக் காட்டுகின்றனர்.

ஏற்கெனவே இருக்கும் உட்பொருட்களின் செயல்திறனைக் கூட்டுதல், அதிகமான பழைய குறியீடுகளை மறு உபயோகம் செய்தல் மற்றும் குறைந்த அளவு புது குறியீடுகளை சேர்த்தல் போன்றவற்றில் மட்டும் பெறுதலை உபயோகிக்கலாம் என்று பரிந்துரைக்கப்படுகிறது.

ஆசிரியர்களின் படி, ‘பகிர்ந்தளித்தல்’ என்ற பொருள் அமைப்பின் தீவிர வடிவத்தை பெறுதலுக்கு பதிலாக உபயோகிக்கலாம். பகிர்ந்தளித்தலில் இரண்டு பொருட்கள் அடங்கி இருக்கும்: “ஒரு அனுப்புனர் தன்னைத் தானே பகிர்ந்தளிப்பதற்கு அனுப்பிக் கொண்டு அனுப்புனரை பகிர்ந்தளிப்பவர் குறிக்கும் படி செய்து விடும். ஆக, கணினியின் இரண்டு பாகங்களுக்கான தொடர்பு தொகுப்பு நேரத்தில் அல்லாமல் செயல்படுத்தப்படும் நேரத்தில் ஏற்படுத்தப் படுகிறது. திரும்ப அழைத்தல் என்ற கட்டுரையில் பகிர்ந்தளித்தல் பற்றிய மேலும் விவரங்கள் உள்ளன.

ஜெனரிக்ஸ் (Ada, Eiffel, ஜாவா, C#, VB.NET) அல்லது வார்ப்புறுக்கள் (C++) என்றும் அழைக்கப்படும் **சுட்டளவு வகைகளைப்**  பற்றியும் ஆசிரியர்கள் ஆலோசிக்கின்றனர்.  அது உபயோகிக்கும் மற்ற வகைகளைக் குறிப்பிடாமல் வேறு எந்த வகையையும் வரையறுக்க இவை அனுமதிக்கும் – குறிப்பிடப்படாத வகைகள் ‘சுட்டளவுகளாக’ உபயோகிக்கப்படும் நேரத்தில் அளிக்கப்படும்.

பகிர்ந்தளித்தல் மற்றும் சுட்டளவாக்குதல் ஆகியவை மிக வலிமையானவை என்று ஆசிரியர்கள் ஒத்துக் கொண்டாலும் ஒரு எச்சரிக்கயையும் கூறுகின்றனர்:

:"நிலையான மென்பொருளை விட தீவிர, அதிகமாக சுட்டளவுள்ள மென்பொருள் புரிந்து கொள்ளவும், அமைக்கவும் மிகவும் கடினமானது”. (கேங்க் ஆஃப் ஃபோர் 1995:21)

ஆசிரியர்கள் மேலும், ஒரு பொருளில் மற்ற பொருள் இருத்தல் அல்லது அதன் அங்கமாக மட்டும் இருத்தல் ஆகியவற்றைக் குறிக்கும் ‘ஒன்று சேர்த்தல்’, (ஒன்று சேர்க்கப்பட்ட பொருள் மற்றும் அதன் உரிமையாளரின் வாழ்காலம் ஒரே போன்று இருக்கும் என்பதை குறிக்கின்றது) என்பதற்கும் ஒரு பொருள் மற்ற பொருளை தெரிந்து மட்டுமே வைத்திருக்கும் **அறிதல்**  என்பதற்கும் இடையேயான வேறுபாடுகளையும் ஆலோசிக்கின்றனர்.  சில சமயங்களில் அறிதல் என்பது ‘தொடர்பு கொள்ளுதல் அல்லது ‘உபயோகிக்கும்; உறவுமுறை என்றும் அழைக்கப்படுகிறது. அறிதல் பொருட்கள் மற்ற பொருட்களின் செயல்களைக் கேட்கலாம் ஆலாம் அவை ஒன்றுக்கொன்று பொறுப்பாகாது. அறிதல் என்பது ஒன்று சேர்த்தலை விட பலவீனமான உறவுமுறை. இது பொருட்களுக்கிடையே மேலும் வலிமையற்ற இணைப்பைக் குறிக்கிறது. இது ஒரு வடிவத்தின் அதிகப்படியான பராமரிப்புக்கு அதிகபட்சமாக தேவைப்படுவதாக இருக்கலாம்.

ஆசிரியர்கள் ‘கருவிப்பெட்டி என்ற வார்த்தையை உபயோகிக்கின்றனர். இதையே C# அல்லது ஜாவா போன்றவற்றில் உபயோகிப்பது போல தற்போது மற்றவர்கள் ‘பிரிவு நூலகம்’ என்பதை உபயோகிக்கின்றனர். இவற்றை ஒப்பிடும் போது, கருவிப்பெட்டிகள் என்பது துணை நடைமுறை நூலகங்களின் பொருள் சார் ஒப்பீடுகள். ‘கட்டமைப்புகள்’ என்பது ஒரு குறிப்பிட்ட மென்பொருள் பிரிவிற்கு மறுமுறை உபயோகிக்கக் கூடிய வடிவத்தை உருவாக்கும் ஒத்துழைக்கும் பிரிவுகளின் கூட்டு ஆகும். **பயன்பாடுகள்**  வடிவமைக்கக் கடினமானவை, **கருவிப்பெட்டிகள்**  அதை விட கடினமானது, **கட்டமைப்புகள்**  வடிவமைக்க மிகவும் கடினமானது என அவர்கள் குறிப்பிடுகின்றனர்.

## மாதிரி நிகழ்வு, அத்தியாயம் 2

"லெக்ஸி எனப்படும் ‘எதைப் பார்க்கிறீர்களோ-அதுவே கிடைக்கும்’(அல்லது 'WYSIWYG') என்ற வடிவத்தைக் கொண்ட ஆவண தொகுப்புக் கருவி பற்றிய படிப்படியான மாதிரி நிகழ்வு அத்தியாயம் 2ல் இருக்கும்." (ப33)

லெக்ஸியை சரியான முறையில் வடிவமைக்க எதிர்கொள்ள வேண்டிய ஏழு பிரச்சனைகள் மற்றும் பின்பற்ற வேண்டிய இடர்பாடுகள் குறித்து இந்த அத்தியாயம் பேசுகின்றது. ஒவ்வொரு பிரச்சனையும் ஆழமாக பகுப்பாயப்பட்டு அதற்கான தீர்வுகளும் கூறப்பட்டுள்ளன. தேவையான இடத்தில் யூனிஃபைடு மாடலிங்க் மொழி மற்றும் மாற்றிக் குறியீடு உள்ளிட்ட தீர்வுகள் முழுமையாக விவரிக்கப்பட்டுள்ளன.

கடைசியாக, ஒவ்வொரு தீர்வும் ஒன்று அல்லது அதற்கு மேற்பட்ட வடிவ முறைகளோடு தொடர்புப்படுத்தப்பட்டுள்ளது. ஒவ்வொரு தீர்வும் அந்த வடிவ முறையின் எந்த வகையில் நேரடி செயல்படுத்துதலாக உள்ளது என்பது சுட்டிக் காட்டப்பட்டுள்ளது.

அந்த ஏழு பிரச்சனைகள் (இடர்பாடுகள் உட்பட) மற்றும் அவற்றிற்கான தீர்வுகள் (குறிக்கப்பட்டுள்ள வடிவங்கள் உட்பட) வருமாறு:

### ஆவண அமைப்பு
“ஒரு ஆவணத்தின் பொருளைப் பற்றிய மொத்த தகவலையும் அளிக்கக் கூடிய” எழுத்துகள், கோடுகள் மற்றும் மற்ற வடிவங்கள் போன்ற “அடிப்படை பல மூலகங்களின் அமைப்பு” ஆவணம் எனப்படும் (ப35). ஆவணத்தின் வடிவத்தில் இந்த பொருட்களின் தொகுப்பு இருக்கும் மற்றும் ஒவ்வொரு பொருளும் மற்ற பொருட்களின் துணைவடிவமாக இருக்கலாம்.

**பிரச்சனைகள் மற்றும் இடர்பாடுகள்**

#எழுத்துகள் மற்றும் படங்கள் ஒரே போலத் தான் கையாளப்பட வேண்டும் (அதாவது படங்கள் எழுத்துகளில் இருந்தோ அல்லது எழுத்துகள் படங்களில் இருந்தோ எடுக்கப்படுபவை அல்ல)
#செயல்படுத்தப்படும் போது கடினமான மற்றும் சுலபமான வடிவங்கள் ஒரே போல தான் கையாளப்பட வேண்டும். இரண்டுக்குமான வித்தியாசங்கள் அதற்குத் தெரிய வேண்டிய அவசியமில்லை.
#சுருக்க மூலகங்களின் குறிப்பிட்ட வழிப்பொருட்கள் சிறப்பியல்புடைய பகுப்பு மூலகங்களைக் கொண்டிருக்க வேண்டும்.

**தீர்வு மற்றும் முறை**

ஒரு *மீள்சுருள் அமைப்பு*  என்பது “சுலபாமானவற்றில் இருந்து தீவிரமான மூலகங்களை உருவாக்கும்” மூலகங்கள் மரபுசார் அமைப்பாகும் (ப36). இந்த அமைப்பின் ஒவ்வொரு கணுவிற்கும் அதன் மூலம் மற்றும் அதிலிருந்து உருவானவை ஆகியவை தெரிந்திருக்கும். முழு அமைப்பில் ஒரு செயல் செய்யப்பட வேண்டுமெனில், ஒவ்வொரு கணுவும் அவற்றிலிருந்து உருவானவற்றை (மீள்சுருள்) அந்த செயலை செய்ய அழைக்கும்.

இது, பல கணுக்களின் தொகுப்பான கூட்டு முறையின் செயல்படுத்துதலைக் குறிக்கும். கணு என்பது சுருக்கமான அடித்தள பிரிவு மற்றும் அதன் வழிப்பொருட்கள் இலைகளாக இருக்கலாம் (ஒருமை) அல்லது மற்ற கணுக்களின் தொகுப்பாக இருக்கலாம் (இவையும் இலைகள் அல்லது சேகரிப்பு-கணுக்களைக் கொண்டிருக்கலாம்).  மூலத்தில் ஒரு செயல் செய்யப்படும் போது மரபு வழியில் அந்த செயல் தொடர்ந்து அனுப்பிக் கொண்டு இருக்கப்படும்.

### வடிவமைத்தல்
அமைப்பில் இருந்து வடிவமைத்தல் வேறுபட்டு இருக்கும். ஒரு ஆவணத்தின் அமைப்பில் உள்ள ஒரு குறிப்பிட்ட நிகழ்வை உருவாக்கும் ஒரு வழி தான் வடிவமைத்தல் என்பதாகும். இதில், எழுத்துகளை கோடுகளாக உடைத்தல், இணைப்புக் குறிகள் உபயோகித்ததல், ஓரங்களின் அளவுகளை சரி செய்தல் போன்றவை அடங்கும்.

**பிரசனைகள் மற்றும் இடர்பாடுகள்** 
#(வடிவமைத்தல்) தரம், வேகம் மற்றும் சேமிப்பு அளவு ஆகியவற்றிற்கிடையேயான உள்ள சமநிலை.
#ஆவண வடிவத்தில் இருந்து வடிவமைத்தலை சுதந்திரமாக (இணை நீக்கல் செய்யப்பட்டு) வைத்திருக்கும்.

**தீர்வு மற்றும் முறை**

ஒரு *கோப்புக் கருவி*  பொதிவுகளை வடிவமைக்க உபயோகிக்கப்படும் நெறிமுறைகளை கூட்டடைவு செய்யும். ஆவணத்தின் அமைப்பின் பழைய பொருட்களின் துணை பிரிவே இந்த கோப்புப் பிரிவு. ஒரு பொதிவுப் பொருளின் நிகழ்வோடு கோப்புக் கருவிக்கு இணையான தொடர்பு இருக்கும்.  ஒரு கோப்புக் கருவி தனது `Compose()` செயல்படுத்தும் போது, அதன் தொடர்புடைய பொதிவுகளின் ஒவ்வொரு மூலகத்தையும் பார்த்து, கட்டங்கள் அல்லது வரிசைகளை புகுத்தி அதன் அமைப்பை மாற்றி அமைக்கும்.

கோப்புக் கருவி என்பதே ஒரு சுருக்கப் பிரிவு. வழிப்பொருள் பிரிவுகள் பல வகையான வடிவமைத்தல் நெறிமுறைகளை உபயோகிக்க இது இடமளிக்கும். (இரட்டை இடைவெளி, அகலமான ஓரங்கள் போன்றவை)

யுக்தி முறைகள் என்பது இந்த குறிக்கோளை அடைய உபயோகிக்கப்படுகிறது. ஒரு யுக்தி என்பது, பல நெறிமுறைகளை மாறும் பொருளில் உபயோகிக்கக் கூடிய வகையில் கூட்டடைவு செய்யும் முறையைக் குறிக்கிறது. இந்த நிகழ்வில், படங்கள், சாதாரண மூலகங்கள் போன்றவை வடிவமைக்கப்படுகிறதா என்பதைப் பொறுத்து வடிவமைத்தல் மாறுபடும்.

### உபயோகிப்பவர் இடமுகப்பை அழகூட்டுதல்
ஆவணத்தோடு தொடர்புகொள்ள உபயோகிப்பவர் உபயோகிக்கும் படங்கள் சார்ந்த இடமுகப்பை மாற்றும் திறன்.

**பிரச்ச்னைகள் மற்றும் இடர்பாடுகள்**

#தொகுப்பு இடத்தைச் சுற்றி ஓரக் கோடுகள் மூலம் எழுத்துகள் உள்ள பக்கத்தை குறித்தல்
#பக்கத்தின் பல பாகங்களை பார்க்க உதவும் சுருள் பட்டி
#உபயோகிப்பவர் இடமுகப்பு பொருட்களுக்கு அழகூட்டுதல் குறித்து தெரியக் கூடாது
#மூலகங்கள் மற்றும் “ஒவ்வொரு சாத்தியமான அழ்கூட்டுதலின் சேர்க்கைகளை” துணைப்பிரிவு செய்வதனால் ஏற்படக் கூடிய “பிரிவுகளின் அதிகப்படியான வெளிப்பாடை” தவிர்த்தல் (ப44).

**தீர்வு மற்றும் முறை**

ஒரு பொதிவின் செயல்பாட்டை அதிகமாகக் கூடிய மூலகங்களை அதனோடு சேர்க்க *வெளிப்படையான இணைப்புகளின்*  உபயோகம் வழி வகுக்கிறது. ஓரங்கள் மற்றும் சுருள் பட்டி போன்ற இந்த மூலகங்கள், ஒற்றை மூலகத்தில் சிறப்பு துணைப்பிரிவுகள் ஆகும். சரியான மூலகங்களை சேர்த்து பொதிவுகள் மேலும் வளர இது அனுமதிக்கிறது. இந்த பெரிதாக்குதல் என்பதும் அமைப்பின் அங்கமாக இருப்பதால், அமைப்பின் `Operation()` அழைக்கப்படும் போது, இவற்றின் சரியான `Operation()` அழைக்கப்படும். இந்த அழகூட்டுதல்களை உபயோகிக்க வடிவத்தோடு இடமுகப்பு அல்லது சிறப்பு அறிவாற்றல் ஆகியவை உபயோகிப்பவருக்குத் தேவைப்படாது என்பதையே இது கூறுகிறது.

இது அழகாக்கும் முறை, இது பொருளில் எந்த மாற்றத்தையும் ஏற்படுத்தாமல் அதற்கு பொறுப்புகளை மட்டும் சேர்க்கின்றது.

### பல வகை பார்த்து மற்றும் உணர் தரத்தை ஆதரித்தல்

பார்த்து மற்றும் உணர் என்பது மேடை-குறிப்பு UI மதிப்பீடுகளைக் குறிக்கிறது. இந்த மதிப்பீடுகள், “உபயோகிப்பவருக்கு பயன்பாடுகள் எப்படி காட்சி அளிக்கிறது மற்றும் செயல்படுகிறது என்பதற்கான வழிமுறைகளை வரையறுக்கிறது” (ப 47).

**பிரச்சனைகள் மற்றும் இடர்பாடுகள்**

#எடுத்துச் செல்லக் கூடிய வகையில் இருப்பதற்காக பல மேடைகளின் மதிப்பீடுகளை தொகுப்பாளர் செயல்படுத்த வேண்டும்.
#புதிய மற்றும் புதிதாக உருவாக்கப்படும் மதிப்பீடுகளுக்கு எளிதாக பொருந்தும் வகையில் இருக்க வேண்டும்.
#செயல்படுத்தும் நேரத்தில் பார்வை மற்றும் உணர்வை மாற்ற அனுமதிப்பதாக இருக்கும் (அதாவது கடினமான குறியீடுகள் இல்லாமல்)
#மூலகங்களின் ஒவ்வொரு வகைக்கும் ஒரு சுருக்க மூலக துணைப் பிரிவுகள் தொகுப்பு இருக்க வேண்டும் (சுருள் பட்டி, பட்டன்கள் போன்றவை)
#வித்தியாசமான பார்வை மற்றும் உணர்வு தரம் இருக்கக் கூடிய ஒவ்வொரு சுருக்க துணைப் பிரிவுக்கும் ஒரு வலிமையான துணைப்பிரிவுகளின் தொகுப்பு இருக்க வேண்டும். (மோடிஃப் சுருள்பட்டியுடன் கூடிய சுருள் பட்டி மற்றும் மோடிஃபுக்கான காட்சி அளிப்பு சுருள் பட்டி மற்றும் காட்சி அளிப்பு பார்வைகள் மற்றும் உணர்வுகள்).

**தீர்வு மற்றும் முறை**

செயல்படுத்தப்படும் நேரத்தில் பல வலிமையான பொருட்களின் பொருள் உருவாக்குதல் செய்ய முடியாத காரணத்தினால், பொருள் உருவாக்கும் செயல்முறை சுருக்கப்பட வேண்டும். UI மூலகங்கள் உருவாக்கும் பொறுப்பை ஏற்றுக்கொள்ளும் சுருக்க  guiFactory மூலமாக இது செய்யப்படுகின்றது. சரியான வகையைச் சார்ந்த (MotifScrollBar) போன்ற வலிமையான மூலகங்களை உருவாக்கும் MotifFactory போன்ற வலிமையான செயல்படுத்துதல்களை  இந்த சுருக்க guiFactory கொண்டுள்ளது. இதன் மூலமாக, நிரல் வெறும் சுருள் பட்டியை மட்டும் கேட்க வேண்டி இருக்கும், மேலும் செயல்படுத்தப்படும் நேரத்தில் சரியான வலிமையான மூலகம் அதற்கு கொடுக்கப்படும்.

இது ஒரு சுருக்க தொழிற்கருவி. ஒரு பொதுவான தொழிற்கருவி ஒரு வகையைச் சேர்ந்த பொருட்களை மட்டுமே உருவாக்கும். ஒரு சுருக்க தொழிற்கருவி, அந்த தொழிற்கருவியின் வலிமையான செயல்படுத்துதலைப் பொறுத்து பல வகையான வலிமையான பொருட்களை உருவாக்கும். வெறும் வலிமையான பொருட்களை மட்டுமே குறிக்கோளாக வைத்துக் கொள்ளாமல் மொத்த வலிமையான பொருட்களின் *குடும்பங்களையே*  குறிக்கோளாகக் கொண்டிருக்கும் ஆற்றல் “ இதனை ஒரே ஒரு வகையான பொருளை மட்டுமே கொண்டிருக்கும் மற்ற உருவாக்கு முறைகளில் இருந்து வேறுபடுத்திக் காட்டுகின்றது” (ப51)

### பல சாளரக் கணினிகளை ஆதரித்தல்

பல மேடைகளில் பார்த்தல் மற்றும் உணர்தல் வித்தியாசமாக இருப்பதைப் போல, சாளரங்களை கையாளும் முறையும் வித்தியாசமாக இருக்கும். ஒவ்வொரு மேடையும், சாளரங்களை வெளிக்காட்டுதல், காட்சிக்கு வைத்தல், உள்ளீடு மற்றும் வெளியீடுகளை கையாளுதல் ஆகியவை வித்தியாசமாக இருக்கும்.

**பிரச்சனைகள் மற்றும் இடர்பாடுகள்**

#இதில் இருக்கக் கூடிய ‘முக்கியமான மற்றும் அதிகமாக ஒத்துப்போகாத அனைத்து சாளர கணினிகளிலும் இந்த ஆவணத் தொகுப்பு செயல்பட வேண்டும் (ப.&nbsp;52)
#சுருக்க தொழிற்கருவி உபயோகிக்கப் பட முடியாது. வேறுபடும் மதிப்பிடுகள் காரணமாக, ஒவ்வொரு வகை நிரல் பலகைக்கும் பொதுவான சுருக்கப் பிரிவுகள் இருக்காது.
#புதிய, மதிப்பீடு இல்லாத சாளர கணினியை உருவாக்க முடியாது.

**தீர்வு மற்றும் முறை**

“அனைத்து சாளர கணினிகளும் ஒரே விஷயத்தை செய்வதனால்”, நம்முடைய சுருக்க மற்றும் வலிமையான பொருள் பிரிவை உருவாக்கலாம்” (ப.&nbsp;52). பழைய வடிவங்களை வரைய, படவுரு போடுதல்/எடுத்தல், மற்றும் சாளர உட்பொருட்களை புதுப்பிக்க ஒவ்வொரு சாளர கணினியும் செயல்பாடுகளைக் கொடுக்கின்றது.

பயன்பாடு, படவுரு போடுதல், வசனம் போன்ற தற்போது இருக்கக் கூடிய பல்வேறு வகையான சாளரங்களுக்கு ஏற்ப சுருக்க அடிப்படை `விண்டோ` பிரிவை உருவாக்க முடியும். இந்த பிரிவுகளில் படவடிவம் மாற்றுதல், படங்கள் மூலம் புதுப்பித்தல் போன்ற சாளரங்களோடு தொடர்புடைய செயல்பாடுகள் இருக்கும். `விண்டோ`வின் சொந்த பட-தொடர்பான செயல்பாடுகள் அழைக்கும் படி இருக்கும், மூலகங்களின் `Draw()` செயல்பாடு ஒவ்வொரு சாளரத்திலும் இருக்கும்.

சாத்தியமான ஒவ்வொரு மேடைக்கும் அந்த மேடைக்குகந்த விண்டோ துணைபிரிவை உருவாக்குவதை தவிர்க்க ஒரு இடமுகப்பு உபயோகிக்கப்படும். `விண்டோ` பிரிவு ஒரு `விண்டோ` செயல்பாட்டு (`விண்டோஇம்ப்`) சுருக்கப் பிரிவை செயல்படுத்தும். இந்த பிரிவு பின்னர் பல குறிப்பிட்ட மேடை செயல்பாடுகளாக பிரிக்கப்படும். இதில் ஒவ்வொன்றிற்கும் குறிப்பிட்ட மேடை தொடர்பான செயல்பாடுகள் இருக்கும். ஆக, ஒவ்வொரு `விண்டோ` வகைக்கும் ஒரே ஒரு `விண்டோ` பிரிவு தொகுப்பு தான் தேவைப்படும் மற்றும் ஒவ்வொரு மேடைக்கும் ஒரு `விண்டோஇம்ப்` பிரிவு தான் தேவைப்படும் (கிடைக்கக் கூடிய அனைத்து வகைகள் மற்றும் மேடைகள் அடங்கிய கார்டீசியன் உற்பத்திப் பொருளுக்குப் பதிலாக). கூடுதலாக, ஒரு புதிய சாளர வகையை சேர்ப்பதற்கு எந்த விதமான மேடை மாற்றங்களும் தேவைப்படாது. இதன் எதிர்மறையும் தேவைப்படாது.

இது ஒரு பால முறையாகும். `விண்டோ` மற்றும் `விண்டோஇம்ப்` வித்தியாசமாக இருக்கும், ஆனால் தொடர்புடையதாக இருக்கும். `விண்டோ` நிரலில் சாளரத்தை சேர்ப்பதை செய்யும் மற்றும் `விண்டோஇம்ப்` மேடையில் சாளரத்தை சேர்ப்பதை கவனித்துக்கொள்ளும். மற்றதை எந்த நேரத்திலும் மாற்றங்களுக்கு உட்படுத்தாமல் ஒன்றில் மாற்றங்கள் செய்ய முடியும். “தனித்தனியாக உருவானாலும், இந்த இரண்டு தனித்தனியான பிரிவு மரபுகள் ஒன்றாக இணைந்து பணி புரிய” இந்த பால முறை அனுமதிக்கும். (ப.&nbsp;54).

### உபயோகிப்பவர் செயல்பாடுகள்

வார்த்தைகளை சேர்த்தல், வடிவமைத்தலை மாற்றுதல், வெளியேறுதல், சேமித்தல் உள்ளிட்ட உபயோகிப்பவரால் ஆவணத்தில் செய்யக்கூடிய அனைத்து செயல்களும்.

**பிரச்சனைகள் மற்றும் இடர்பாடுகள்**

#ஒரே கட்டளைக்கான விசைப்பலகை குறுக்கு வழி மற்றும் பட்டி தேர்வுகள் போன்ற வெவ்வேறு உள்ளீடுகள் மூலமாக செயல்பாடுகளை அணுக முடியும்.
#ஒவ்வொரு தேர்வுக்கும் மாற்றம் செய்யக் கூடிய ஒரு இடமுகப்பு இருக்கும்.
#பல விதமான பிரிவுகளின் செயல்பாடுகள் செயல்படுத்தப்படுகிறது.
#இணைத்தலை தடுக்க, செயல்படுத்துதலுக்கும் உபயோகிப்பவர் இடமுகப்பு பிரிவுகளுக்கும் இடையே அதிகமான சார்புகள் இருக்கக்கூடாது.
#செய்ததை விடுதல் மற்றும் திரும்பச் செய்தல் ஆகிய கட்டளைகள் அனைத்து ஆவணங்கள் மாற்றும் செயல்பாடுகளில் ஆதரிக்கப்பட வேண்டும். செய்ததை விடு கட்டளையை உபயோகிக்கும் எண்ணிக்கையில் எந்த எல்லையும் இருக்கக்கூடாது.
#சுலபமாக செய்ததை விடுதல்/திரும்ப செய்தல் செய்ய முடியாததால், ஒரு நிலைக்கு சுலபமாக தொடர்புடையதாக இல்லாததால் மற்றும் விரிவாக்க அல்லது மறுமுறை உபயோகிக்கக் கடினமாக இருக்கும் காரணத்தால், செயல்பாடுகள் சாத்தியமானதாக இல்லை.
#பட்டிகள் மரபுசார் வழியில் தொகுக்கப்பட்ட முறைகளாகக் கையாளப்பட வேண்டும். ஆக, ஒரு மெனு (பட்டி) என்பது ஒரு மெனு வகையாகும். இதில் மற்ற மெனு வகைகள் மற்றும் பலவற்றை கொண்டிருக்கும் மெனு வகைகள் இருக்கலாம்.

**தீர்வு மற்றும் முறை**

ஒவ்வொரு பட்டியில் உள்ள பொருளும், சுட்டளவுகளாக அமைக்கப்படுவதற்குப் பதிலாக, ஒரு *கட்டளை*  பொருளினால் செய்யப்படுகிறது.

கட்டளை என்பது ஒரே ஒரு சுருக்க `Execute()`  முறை கொண்ட ஒரு சுருக்கப் பொருளாகும். எடுக்கப்பட்ட பொருட்கள் `Execute()` முறையை சரியான வகையில் விரிவாக்குகின்றது. (அதாவது  `PasteCommand.``Execute()` உட்பொருளின் பிடிப்புப் பலகை இடையகத்தை உபயோகிக்கக் கூடியது). பட்டியில் உள்ள பொருட்களால் சுலபமாக உபயோகிக்கக் கூடியதைப் போலவே இந்த பொருட்களை நிரல் பலகைகள் அல்லது பட்டன்களினாலும் உபயோகிக்கப்படக்கூடும்.

செய்ததை விடு அல்லது திரும்பச் செய் கட்டளைகளை ஆதரிப்பதற்காக, `Unexecute()` மற்றும் `Reversible()` `Command`களும் கொடுக்கப்பட்டுள்ளது. எடுக்கப்பட்ட பிரிவுகளில், முதலாவதில் அந்த கட்டளையை திரும்பப் பெறும் குறியீடு உள்ளது மற்றும் இரண்டாவது ஒரு பூலியன் மதிப்பை வெளிப்பதுத்தி அந்த கட்டளை திரும்ப செய்யத்தக்கதா என்பதை வரையறுக்கும். `Reversible()` சில கட்டளைகளை திரும்பப் பெற முடியாதவையாகக் காட்டும். உதாரணமாக சேவ் என்ற கட்டளை.

செயல்படுத்தப்பட்ட அனைத்து `Commands` ஒரு பட்டியலில் வைக்கப்பட்டிருக்கும். கடைசியாக செயல்படுத்தப்பட்ட கட்டளைக்கு அருகில் “பிரசண்ட்” என்ற குறி இருக்கும் முறை கையாளப்படும். செய்ததை விடு என்ற வேண்டுகோள் வரும் போது `Command.``Unexecute()` என்பது “பிரசண்ட் என்ற குறி உள்ள கட்டளைக்கு முன் நேரடியாக அழைக்கப்படும். பின்னர் “பிரசண்ட்” குறியீடு ஒரு கட்டளை பின்னோக்கி தள்ளப்படும். மாறாக, `Redo` என்ற வேண்டுகோள் `Command.``Execute()` என்பதை “பிரசண்ட்” என்பதற்குப் பின் அழைக்கப்படும் மற்றும் “பிரசண்ட்” குறியீட்டை ஒரு கட்டளை முன்னதாக தள்ளப்படும்.

இந்த `Command` வரலாறு கட்டளை முறையின் செயல்படுத்துதல் ஆகும். இது வேண்டுகோள்களை பொருட்களில் கூட்டடைவு செய்து அந்த வேண்டுகோள்களை அணுக ஒரு பொதுவான இடமுகப்பை உபயோகிக்கின்றது. ஆக, உபயோகிப்பவர் பல வேண்டுகோள்களை கையாள முடியும் மற்றும் பயன்பாடு முழுவதும் கட்டளைகள் பரப்பக் கூடும்.

### எழுத்துக் கோர்வையை சரிபார்த்தல் மற்றும் இணைப்புக் குறியிடுதல்

ஒரு ஆவணத்தின் உட்பொருட்களை வார்த்தைகள் மூலமாக பகுப்பாய்வு செய்யும் ஆவணத் தொகுப்புக் கருவியின் திறனாகும். பல வகையான பகுப்பாய்வுகள் செய்யக் கூடியவையாக இருந்தாலும், எழுத்துக் கோர்வை சரி பார்த்தல் மற்றும் இணைப்புக் குறி வடிவமைத்தல் ஆகியவை தான் முக்கியமானவையாகும்.

**பிரச்சனைகள் மற்றும் இடர்பாடுகள்**

#எழுத்துக் கோர்வை சரி பார்க்க மற்றும் இணைப்புக் குறியிடக்கூடிய இடங்களைக் கண்டறிய பல வழிகளை அனுமதிக்க வேண்டும்.
#மேலும் பகுப்பாய்வுகள் நடத்த அனுமதிக்க வேண்டும் (உதாரணமாக, எழுத்து எண்ணிக்கை, இலக்கணம் சரிபார்த்தல்)
#ஒரு பாடத்தின் உட்பொருட்களை அதன் வடிவத்தை அனுகாமல் பல செயல்கள் ஆற்றக்கூடிய வகையில் இருத்தல் (உதாரணமாக, வரிசை, தொடர்புப்படுத்தப்பட்ட பட்டியல், சரம்).
#ஆவணத்தில் எப்படி வேண்டுமானாலும் பயணிக்க அனுமதி (தொடக்கத்தில் இருந்து முடிவு வரை, எழுத்து வரிசைப்படி, போன்றவை)

**தீர்வு மற்றும் முறை**

அடிப்படை மூலகத்தில் இருந்து முழு எண்-சார்ந்த உள்ளடகத்தை எடுப்பது, வேறு ஒரு மறு செய்கை இடமுகப்பை செயல்படுத்த அனுமதிக்கிறது. பயணித்தல் மற்றும் பொருட்களை திரும்பப் பெறுதல் ஆகியவற்றிற்கு இதற்கென கூடுதல் முறைகள் தேவைப்படும். இந்த முறைகள் ஒரு சுருக்கமான `Iterator` இடமுகப்பில் போடப்படுகிறது. ஒவ்வொரு மூலகமும் இந்த `Iterator`லிருந்து எடுக்கப்பட்ட ஒன்றை செயல்படுத்துகிறது (`ArrayIterator`, `LinkListIterator`, மற்றும் பல).

பயணித்தல் மற்றும் திரும்பப் பெறுதல் ஆகிய செயல்பாடுகள் சுருக்கமான மறுசெய்கை இடமுகப்பில் போடப்படுகிறது. பயணிக்கக் கூடிய வரிசை மற்றும் தொடர்பு படுத்தபட்ட பட்டியல் போன்ற பட்டியல் வகைகளில் இருந்து வருங்கால மறுசெய்கைகள் எடுக்கப்படக் கூடும். ஆக, மூலகத்தின் செயல்பாடு எந்த வகையான உள்ளடக்க முறையை உபயோகித்தாலும், அதற்கு தகுந்த மறு செய்கைகள் இருக்கும்.

இது மறுசெய்கை முறையின் செயல்படுத்துதல் ஆகும். உபயோகிப்பவர் எந்த பொருள் சேர்க்கையையும் அதன் உட்பொருள்களை அணுகாமல் அல்லது சேர்க்கை முறை உபயோகிக்கும் பட்டியலின் வகையைப் பற்றி கவலைப்படாமல் நேரடியாக பயணிக்க அனுமதிக்கிறது.

பயணித்தல் என்பது கையாளப்பட்டுவிட்ட நிலையில், மூலகத்தின் அனைப்பை பகுப்பாய்வது சாத்தியமாகிறது. மூலக அமைப்பிலேயே ஒவ்வொரு வகையான பகுப்பாய்வையும் நடத்துவது சாத்தியம் அல்ல; ஒவ்வொரு மூலகத்திற்கும் குறியிடப்பட வேண்டும் மற்றும் ஒரே மாதிரியான மூலகங்களுக்கு பெரும்பாலான குறியீடுகள் ஒரே மாதிரியாக இருக்கும்.

இதற்கு பதிலாக, ஒரு பொதுவான `CheckMe()` என்ற முறை மூலகத்தின் சுருக்கப் பிரிவில் உருவாக்கப்படுகிறது. ஒவ்வொரு மறு செய்கையும் ஒரு குறிப்பிட்ட நெறிமுறையோடு குறிப்பிடப்படுகிறது (எழுத்துக் கோர்வை சரிபார்த்தல், இலக்கணம் சரி பார்த்தல் போன்றவை). பல செயல் கருவி அதன் சேர்க்கைகளில் பல செயல்களை செய்யும் போது குறிப்பொட்ட நெறிமுறைகளில் பயணித்து ஒவ்வொரு மூலகத்தின்  `CheckMe` கட்டளையை அழைக்கும். `CheckMe` பின்னர் தேவைப்படும் நெறிமுறைக்கு அதன் மூலகத்திற்கு மறுபடியும் குறிப்புகளை பகுப்பாய்வுக்காக அனுப்பிவைக்கும்.

ஆக, எழுத்துக் கோர்வை பரிசோதிக்க, ஒரு தொடக்கத்தில் இருந்து இறுதி வரை செல்லும் பல செயலாற்றல் கருவிக்கு `SpellCheck` பொருளின் குறிப்பு அளிக்கப்படும். பல செயலாற்றல் கருவி பின்னர் ஒவ்வொரு மூலகமாக அனுகி அதன் `CheckMe()` முறையை `SpellCheck` சுட்டளவோடு செயல்படுத்தும். ஒவ்வொரு `CheckMe` பின்னர் `SpellCheck` அழைத்து அதற்கேற்ற மூலகத்துக்கு குறிப்பு அளிக்கும்.

இந்த முறையில், வலிமையான குறியீடுகள் ஒன்றோடொன்று இணையாமல் எந்த ஒரு நெறிமுறையும் எந்த ஒரு பயண முறையோடு உபயோகிக்கலாம். உதாரணமாக, கண்டுபிடி என்பது “அடுத்ததை கண்டுபிடி” அல்லது "முந்தையதை கண்டுபிடி" என்று உபயோகிக்கலாம். இது “முன்செல்லும்” பல செயலாற்றல் கருவி அல்லது “பின் செல்லும்” பல செயலாற்றல் கருவி உபயோகிப்பதை சார்ந்து அமையும்.

கூடுதலாக, பல்வேறு மூலகங்களை கையாள நெறிமுறைகளே கூட பொறுப்பாகலாம். உதாரணமாக, `SpellCheck`க்கிற்கு செல்லாத வகையில் ஒவ்வொரு `Graphic` மூலம் எடுக்கப்பட்ட மூலகத்திற்கும் நிரல் எழுதப்படுவதற்கு பதிலாக ஒரு `SpellCheck` நெறிமுறை `Graphic` மூலகத்தைத் தவிர்த்துவிடும்.

இது பார்வையாளர் முறையின் செயல்படுத்துதல் ஆகும்.

## படைப்பு முறைகள்
இவை பிரிவுகளை உருவாக்குவதற்குத் தொடர்புடைய முறைகளாகும். இவற்றை பிரிவு உருவாக்கும் முறைகள் மற்றும் பொருள் உருவாக்கும் முறைகள் என்றும் மேலும் பிரிக்கலாம். இந்த உருவாக்கும் முறையில் பிரிவு-உருவாக்கும் முறைகள் பெறுதலை சிறப்பான முறையில் உபயோகித்தாலும், பொருள்-உருவாக்கும் முறைகள் வேலையை முடிக்க பகிர்ந்தளித்தலை பயன்படுத்துகிறது.

* சுருக்க தொழிற்கருவி ஒரே நோக்கத்தை உடைய பொருள் தொழிற்கருவிகளை ஒன்றாக சேர்க்கும்.
* கட்டுமானக் கருவி கடினமான பொருட்களை கட்டுமானம் மற்றும் பிரதிநிதித்தல் என்பதை பிரித்து உருவாக்குகிறது.
* தொழிற்கருவி முறை உருவாக்கப்பட வேண்டிய சரியான பிரிவைக் குறிப்பிடாமல் பொருட்களை உருவாக்குகிறது.
* மூலப் படிமங்கள் ஏற்கெனவே இருக்கக் கூடிய பொருளை நகல் எடுத்து பொருட்களை உருவாக்குகிறது.
* சிங்கிள்டன் ஒரு பிரிவு பொருட்களை உருவாக்குதலை ஒரு நிகழ்வுக்கு மேல் இல்லாமல் தடுக்கிறது.

## அமைப்பு முறைகள்
இவற்றில் பிரிவு மற்றும் பொருள் பொதிவுகள் இருக்கும். இவை இடமுகப்புகளை உருவாக்க பெறுதலை உபயோகிக்கிறது மற்றும் இவை புதிய செயல்பாடுகளைப் பெற பொருட்களை உருவாக்கும் வழிகளையும் வரையறுக்கிறது. 
* ஏற்கெனவே இருக்கும் பிரிவுகளின் மேல் தனது இடமுகப்பைப் போர்த்தி ஒத்துப்போகாத இடமுகப்புகள் கொண்ட பிரிவுகளை ஒன்றாக இணைந்து பணி புரிய ஏற்பி அனுமதிக்கிறது.
* இரண்டுமே சுதந்திரமாக வேறுபடும் வகையில் சுருக்கமாக்குதல் மற்றும் அதன் செயல்படுத்துதலை பாலம் பிரிக்கின்றது.
* தொகுப்பு பூஜ்யம் அல்லது அதற்கு மேலான ஒரே மாதிரியான பொருட்களை உருவாக்கி அவற்றை ஒரு பொருளாக மாற்றக் கூடிய வகையில் செய்யும்.
* அழகுபடுத்தும் கருவி ஒரு பொருளில் நடத்தையை கூடுதலாக்கவோ/கழிக்கவோ செய்கிறது.
* முகப்பு ஒரு குறியீட்டின் பெரிய அளவிற்கு சுலபமாக்கப்பட்ட இடமுகப்பை அளிக்கிறது.
* ஃபிளை வெயிட் அதிகப்படியான ஒரே மாதிரியான பொருட்களை உருவாக்க மற்றும் கையாளத் தேவைப்படும் செலவைக் குறைக்கின்றது.
* பிராக்சி என்பது அனுகுதலை கட்டுப்படுத்த, செலவைக் குறைக்க, மற்றும் சிக்கலைத் தவிர்க்க வேறொரு பொருளுக்கு இடம் அளிக்கின்றது.

## நடத்தை முறைகள்
இந்த வடிவ முறைகளில் பெரும்பாலானவை **பொருள்களுக்கு**  இடையேயான தொடர்பிலேயே குறிப்பாக கவனம் செலுத்துகின்றன.

* பொறுப்புகளின் வரிசை பதப்படுத்தும் பொருட்களின் ஒரு வரிசைக்கு கட்டளைகளை பகிர்ந்தளிக்கின்றது.
* செயல்கள் மற்றும் சுட்டளவுகளின் கூட்டடைவு செய்யும் பொருட்களை கட்டளைகள் உருவாக்குகிறது.
* மொழிபெயர்ப்புக் கருவி ஒரு மேம்பட்ட மொழியை செயல்படுத்துகின்றது.
* பல செயலாற்றல் கருவி ஒரு பொருளின் மூலகங்களை ஒவ்வொன்றாக அதன் பிரதிநிதித்துவத்தை வெளிப்படுத்தாமல் அணுகுகிறது.
* பிரிவுகளின் முறைகளைப் பற்றிய விவரமான அறிவாற்றல் இருப்பதன் மூலம் நடுநிலைக் கருவி பிரிவுகளுக்கிடையே மெலிதான இணைப்பை அனுமதிக்கின்றது.
* மெமெண்டோ ஒரு பொருளை அதன் முந்தைய நிலைக்குத் (திரும்பச் செயதல்) திரும்ப தேவைப்படும் ஆற்றலை அளிக்கிறது.
* பார்வையாளர் கருவி என்பது ஒரு வெளியீடு/பங்களிக்கும் முறை. இது பல பார்வைப் பொருட்களை ஒரு நிகழ்வை பார்வையிட அனுமதிக்கின்றது.
* நிலை என்பது ஒரு பொருள் தனது உட்புற நிலை மாறும் போது தனது நடத்தையை மாற்றிக்கொள்ள அனுமதிக்கின்றது.
* யுக்தி என்பது செயல்படுத்தப்படும் நேரத்தில் நெறிமுறைகளின் கூட்டில் இருந்து ஒன்றை மட்டும் தேர்ந்தெடுக்க அனுமதிக்கிறது.
* வார்ப்புறு முறை ஒரு நெறிமுறையின் அமைப்பை ஒரு சுருக்கப் பிரிவாக வரையறுத்து அதன் துணைப்பிரிவுகள் வலிமையான நடத்தையைக் கொடுக்க அனுமதிக்கின்றது.
* வருகைக் கருவி, முறைகளின் வரிசையை ஒரு பொருளுக்கு மாற்றி, பொருள் அமைப்பில் இருந்து நெறிமுறையை பிரிக்கிறது.

## மேலும் காண்க
*வடிவ முறைகள் (கணினி அறிவியல்)
*எண்டர்பிரைஸ் இண்டக்ரேஷன் முறை
*வழிகாட்டி முறைகள்
*ஜீ.ஆர்.ஏ.எஸ்.பி (கிராஸ்ப்) (பொருள் சார் வடிவம்)
*மென்பொருள் வடிவமைப்பியல்
## குறிப்புதவிகள்


## புற இணைப்புகள்
*GoF டிசைன் பேட்டண்ஸ்: வேகமாக படிப்பதற்கான யோசனைகள்
*101 வடிவ முறைகள் மற்றும் உருவாக்குபவர்களுக்கான யோசனைகள்
*ஆக்ஷன் ஸ்கிரிப்ட் 3 உபயோகித்து அடோப் ஃபிளக்ஸ் 3ல் ஒவ்வொரு வடிவ முறைக்கான உதாரணங்கள் 

பகுப்பு:1994 நூல்கள்
பகுப்பு:கூகுள் தமிழாக்கம்-நூல்கள்