வடிவமைப்பு முறை அம்பலமானது: வியூக முறை

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

'



“வடிவமைப்பு வடிவங்கள் வெளிப்படுத்தப்பட்டவை” தொடரின் முதல் இடுகைக்கு வருக. இந்தத் தொடரில் ஒவ்வொரு வடிவமைப்பு வடிவத்தையும் புதிதாகக் கண்டறியப் போகிறோம்.



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

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



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

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

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



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

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

நான் அதை எப்படி செய்ய முடியும்?

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

இப்போது, ​​குறியீட்டுக்கு முழுக்குவோம், சிறந்த புரோகிராமராக மாறுவதற்கான பயணத்தைத் தொடங்குவோம். இந்த இடுகையில், மிக முக்கியமான ஒரு வடிவத்தை நாம் கண்டுபிடிக்கப் போகிறோம் - வியூக முறை .

மிக முக்கியமானது என்று நான் கூறும்போது, ​​அது வியூக வடிவத்தால் தீர்க்கப்படும் பொதுவான சிக்கலைப் பிரதிபலிக்கிறது.

வியூக முறை என்ன?

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

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

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

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

எனவே ஒரு விலங்கு சுருக்க வகுப்பு மற்றும் நாய் மற்றும் பறவை என்ற இரண்டு கான்கிரீட் வகுப்புகளை வரையறுப்போம்.

மேலே உள்ள வடிவமைப்பைப் பற்றி நீங்கள் என்ன நினைக்கிறீர்கள்? எங்கள் வடிவமைப்பில் ஒரு பெரிய தவறு உள்ளது.

pmi-acp மதிப்புள்ளது

எல்லா விலங்குகளும் பறக்க முடியாது, மேலே உள்ளதைப் போல ஒரு நாய் பறக்க முடியாது. ஆனால் இன்னும் அதற்கு ‘பறக்க’ நடத்தை உள்ளது.

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

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

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

Dog.fly () அல்லது முதலை.ஃப்ளை () என்று அழைப்பது எப்படி?

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

எங்கள் வடிவமைப்பு அனைத்து விலங்கு துணை வகுப்புகளையும் பறக்கக்கூடிய நடத்தை கொண்டதாக அமல்படுத்தாத வகையில் எங்கள் வகுப்புகளை வடிவமைப்பதற்கான வேறு வழி என்ன?

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

இப்போது, ​​எங்கள் விலங்கு வகுப்பு விலங்கு வகுப்பிலிருந்து பறக்கும் முறையை அகற்றிய பின் கீழேயுள்ள குறியீட்டைப் போல இருக்கும்.

இப்போது பறக்கும் இடைமுகத்தை வரையறுக்கலாம்

இப்போது, ​​நாய் வகுப்பு மாற்றப்படும்எனகீழே உள்ள குறியீடு மற்றும் அதற்கு பறக்க நடத்தை தேவையில்லை.

பறக்கும் நடத்தை கொண்ட எங்கள் விலங்கு துணை வகுப்புகளில் சிலவற்றைப் பார்ப்போம்.

எங்கள் முந்தைய சிக்கலை நாங்கள் தீர்த்துள்ளோம், ஆனால் நாங்கள் ஒரு புதிய சிக்கலில் சிக்கியுள்ளோம், அது “குறியீடு நகல்” ஆகும்.

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

அப்பாச்சி ஹடூப்பிற்கான கிளவுட்ரா சான்றளிக்கப்பட்ட டெவலப்பர்

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

எனவே மூலோபாய வடிவத்தைப் பயன்படுத்த எங்கள் குறியீட்டை மறுசீரமைப்போம்.

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

எனவே, இது எவ்வாறு இயங்குகிறது, டெஸ்ட் கிளாஸைப் பார்ப்போம்

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

வியூக வடிவத்தை எப்போது பயன்படுத்த வேண்டும்?

இயக்க நேரத்தில் இயக்கத்தை மாறும் வகையில் மாற்ற முடியும்.

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

மேலே உள்ள பணியாளர் வகுப்பில், பணியாளரின் பதவியைப் பொறுத்து ஊதியத்தை நிர்ணயிக்கிறோம். ஒரு ஊழியர் ஒரு “இன்டர்ன்” என்றால், உண்மையான ஊதியத்தைக் கணக்கிட அடிப்படை சம்பளத்தில் 10% போனஸைச் சேர்க்கிறோம்.

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

எனவே, பணியாளர் வகுப்பு குறியீட்டில் என்ன தவறு?

சரி, ஊதியத்தை (getPay ()) கணக்கிடுவதற்கான குறியீடு நிலையானது. “இன்டர்ன்” க்கான போனஸை 10% முதல் 14% ஆக மாற்ற விரும்புகிறேன் என்று வைத்துக்கொள்வோம். நான் பணியாளர்-வகுப்பு குறியீட்டைத் திறந்து அதை மாற்ற வேண்டும்.

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

வியூக வடிவத்தைப் பயன்படுத்துவதற்கான குறியீட்டை மறுசீரமைப்போம்.

ஊதியத்தைக் கணக்கிட பல வழிமுறைகளை வரையறுக்கப் போகிறேன். ரன் நேரத்தில் ஊதியத்தைக் கணக்கிட இந்த வழிமுறைகளில் ஏதேனும் ஒன்றை நான் பயன்படுத்த முடியும்.

இப்போது, ​​பணியாளர் வகுப்பு எவ்வாறு மாறப்போகிறது என்று பார்ப்போம்.

ஒரு வர்க்கத்திற்கும் இடைமுகத்திற்கும் என்ன வித்தியாசம்

குறிப்பு: ஊதியக் கணக்கீட்டு தர்க்கத்தை ஊழியர் வகுப்பிலிருந்து நீக்கிவிட்டு, ஒரு தொகுப்பு PayAlgorithm () முறையை உருவாக்கியுள்ளேன், இதன் மூலம் நான் சம்பளக் கணக்கீட்டிற்குப் பயன்படுத்த விரும்பும் PayAlgorithm ஐ அமைப்பேன்.

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

எனவே இது செயல்படுவதைப் பார்ப்போம்.

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

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

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

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

எங்களுக்கு ஒரு கேள்வி கிடைத்ததா? கருத்துகள் பிரிவில் அவற்றைக் குறிப்பிடுங்கள், நாங்கள் உங்களைத் தொடர்புகொள்வோம்.

தொடர்புடைய இடுகைகள்: