ವಿನ್ಯಾಸ ಮಾದರಿ ಎಂದರೇನು? ಇತರ ನಿಘಂಟುಗಳಲ್ಲಿ "ವಿನ್ಯಾಸ ಮಾದರಿಗಳು" ಏನೆಂದು ನೋಡಿ

ನಿಮ್ಮ ಸ್ವಂತ ಕೈಗಳಿಂದ 08.07.2019
ನಿಮ್ಮ ಸ್ವಂತ ಕೈಗಳಿಂದ

ನಮ್ಮ ಜೀವನದಲ್ಲಿ ಸಾಮಾನ್ಯವಾಗಿ ಬಳಸುವ ಮಾದರಿಗಳ ಬಗ್ಗೆ ಸಂಕ್ಷಿಪ್ತವಾಗಿ ಬರೆಯಲು ನಾನು ನಿರ್ಧರಿಸಿದೆ, ಮತ್ತು ಹೀಗೆ.

ಸಿಂಗಲ್ಟನ್

"ಸಿಂಗಲ್" ನ ಮುಖ್ಯ ಅಂಶವೆಂದರೆ ನೀವು "ನನಗೆ ಟೆಲಿಫೋನ್ ಎಕ್ಸ್ಚೇಂಜ್ ಬೇಕು" ಎಂದು ಹೇಳಿದಾಗ ಅವರು ನಿಮಗೆ "ಅದನ್ನು ಈಗಾಗಲೇ ನಿರ್ಮಿಸಲಾಗಿದೆ" ಎಂದು ಹೇಳುತ್ತಾರೆ ಮತ್ತು "ಅದನ್ನು ಮತ್ತೆ ನಿರ್ಮಿಸೋಣ" ಅಲ್ಲ. ಒಬ್ಬ "ಏಕಾಂಗಿ" ಯಾವಾಗಲೂ ಒಬ್ಬಂಟಿಯಾಗಿರುತ್ತಾನೆ.

ಕ್ಲಾಸ್ ಸಿಂಗಲ್‌ಟನ್ (ಖಾಸಗಿ ಸ್ಥಿರ $instance = ಶೂನ್ಯ; ಖಾಸಗಿ ಕಾರ್ಯ __ಕನ್‌ಸ್ಟ್ರಕ್ಟ್())( /* ... @ರಿಟರ್ನ್ ಸಿಂಗಲ್‌ಟನ್ */ ) // ಹೊಸ ಸಿಂಗಲ್‌ಟನ್ ಖಾಸಗಿ ಕಾರ್ಯದ ಮೂಲಕ ಸೃಷ್ಟಿ ವಿರುದ್ಧ ರಕ್ಷಿಸಿ __clone() ( /* ... @return Singleton * / ) // ಕ್ಲೋನಿಂಗ್ ಪ್ರೈವೇಟ್ ಫಂಕ್ಷನ್ ಮೂಲಕ ಸೃಷ್ಟಿಯ ವಿರುದ್ಧ ರಕ್ಷಿಸಿ __wakeup() ( /* ... @return Singleton */ ) // unserialize ಸಾರ್ವಜನಿಕ ಸ್ಟ್ಯಾಟಿಕ್ ಫಂಕ್ಷನ್ getInstance() ( if (is_null(self::$instance) ಮೂಲಕ ಸೃಷ್ಟಿಯ ವಿರುದ್ಧ ರಕ್ಷಿಸಿ ) (ಸ್ವಯಂ::$ಉದಾಹರಣೆಗೆ = ಹೊಸ ಸ್ವಯಂ;) ಸ್ವಯಂ ಹಿಂತಿರುಗಿ::$ಉದಾಹರಣೆಗೆ;) )

ರಿಜಿಸ್ಟ್ರಿ (ನೋಂದಣಿ, ನಮೂದುಗಳ ಜರ್ನಲ್)

ಹೆಸರೇ ಸೂಚಿಸುವಂತೆ, ಈ ಮಾದರಿಯನ್ನು ಅದರಲ್ಲಿ ಇರಿಸಲಾಗಿರುವ ದಾಖಲೆಗಳನ್ನು ಸಂಗ್ರಹಿಸಲು ವಿನ್ಯಾಸಗೊಳಿಸಲಾಗಿದೆ ಮತ್ತು ಅದರ ಪ್ರಕಾರ, ಈ ದಾಖಲೆಗಳನ್ನು (ಹೆಸರಿನಿಂದ) ಅಗತ್ಯವಿದ್ದರೆ ಹಿಂತಿರುಗಿಸಿ. ದೂರವಾಣಿ ವಿನಿಮಯದ ಉದಾಹರಣೆಯಲ್ಲಿ, ಇದು ನಿವಾಸಿಗಳ ದೂರವಾಣಿ ಸಂಖ್ಯೆಗಳಿಗೆ ಸಂಬಂಧಿಸಿದಂತೆ ಒಂದು ರಿಜಿಸ್ಟರ್ ಆಗಿದೆ.

ಕ್ಲಾಸ್ ರಿಜಿಸ್ಟ್ರಿ (ಖಾಸಗಿ $ರಿಜಿಸ್ಟ್ರಿ = ಅರೇ(); ಸಾರ್ವಜನಿಕ ಫಂಕ್ಷನ್ ಸೆಟ್ ($ಕೀ, $ಆಬ್ಜೆಕ್ಟ್) ($this->ರಿಜಿಸ್ಟ್ರಿ[$ಕೀ] = $ಆಬ್ಜೆಕ್ಟ್; ) ಸಾರ್ವಜನಿಕ ಫಂಕ್ಷನ್ ಪಡೆಯಿರಿ($ಕೀ) ($this->ರಿಜಿಸ್ಟ್ರಿ ಹಿಂತಿರುಗಿ [$ಕೀ];))

ಸಿಂಗಲ್ಟನ್ ರಿಜಿಸ್ಟ್ರಿ- ಗೊಂದಲ ಮಾಡಬೇಡಿ)

"ನೋಂದಣಿ" ಸಾಮಾನ್ಯವಾಗಿ "ಏಕಾಂಗಿ" ಆಗಿದೆ, ಆದರೆ ಅದು ಯಾವಾಗಲೂ ಹಾಗೆ ಇರಬೇಕಾಗಿಲ್ಲ. ಉದಾಹರಣೆಗೆ, ನಾವು ಅಕೌಂಟಿಂಗ್ ವಿಭಾಗದಲ್ಲಿ ಹಲವಾರು ನಿಯತಕಾಲಿಕಗಳನ್ನು ರಚಿಸಬಹುದು, ಒಂದರಲ್ಲಿ "A" ನಿಂದ "M" ವರೆಗೆ ಉದ್ಯೋಗಿಗಳು ಇದ್ದಾರೆ, ಇನ್ನೊಂದರಲ್ಲಿ "N" ನಿಂದ "Z" ವರೆಗೆ. ಅಂತಹ ಪ್ರತಿಯೊಂದು ಜರ್ನಲ್ "ನೋಂದಾವಣೆ" ಆಗಿರುತ್ತದೆ, ಆದರೆ "ಏಕೈಕ" ಅಲ್ಲ, ಏಕೆಂದರೆ ಈಗಾಗಲೇ 2 ಜರ್ನಲ್ಗಳಿವೆ.

Class SingletonRegistry (ಖಾಸಗಿ ಸ್ಥಿರ $instance = ಶೂನ್ಯ; ಖಾಸಗಿ $ರಿಜಿಸ್ಟ್ರಿ = ರಚನೆ (); ಖಾಸಗಿ ಕಾರ್ಯ __ಕನ್ಸ್ಟ್ರಕ್ಟ್() ( /* ... @return Singleton */ ) // ಹೊಸ ಸಿಂಗಲ್ಟನ್ ಖಾಸಗಿ ಕಾರ್ಯದ ಮೂಲಕ ರಚನೆಯಿಂದ ರಕ್ಷಿಸಿ __clone() ( / * ... @return Singleton */ ) // ಕ್ಲೋನಿಂಗ್ ಖಾಸಗಿ ಕಾರ್ಯದ ಮೂಲಕ ಸೃಷ್ಟಿಯ ವಿರುದ್ಧ ರಕ್ಷಿಸಿ __wakeup() ( /* ... @return Singleton */ ) // unserialize ಸಾರ್ವಜನಿಕ ಸ್ಟ್ಯಾಟಿಕ್ ಫಂಕ್ಷನ್ getInstance() ( ವೇಳೆ () ಮೂಲಕ ಸೃಷ್ಟಿಯ ವಿರುದ್ಧ ರಕ್ಷಿಸಿ is_null(self::$instance)) ( self::$instance = new self; ) return self ::$instance; ) ಸಾರ್ವಜನಿಕ ಫಂಕ್ಷನ್ ಸೆಟ್($ಕೀ, $ಆಬ್ಜೆಕ್ಟ್) ($this->ರಿಜಿಸ್ಟ್ರಿ[$key] = $ ವಸ್ತು;) ಸಾರ್ವಜನಿಕ ಕಾರ್ಯವನ್ನು ಪಡೆಯಿರಿ ($ಕೀ) ($this->ರಿಜಿಸ್ಟ್ರಿ[$key]; ) )

ಮಲ್ಟಿಟನ್ ("ಸಿಂಗಲ್ಸ್" ಪೂಲ್) ಅಥವಾ ಬೇರೆ ರೀತಿಯಲ್ಲಿ ಹೇಳುವುದಾದರೆರಿಜಿಸ್ಟ್ರಿ ಸಿಂಗಲ್ಟನ್ ) - ಸಿಂಗಲ್ಟನ್ ರಿಜಿಸ್ಟ್ರಿಯೊಂದಿಗೆ ಗೊಂದಲಗೊಳಿಸಬೇಡಿ

ಸಾಮಾನ್ಯವಾಗಿ "ರಿಜಿಸ್ಟರ್" ಅನ್ನು "ಸಿಂಗಲ್ಸ್" ಅನ್ನು ಸಂಗ್ರಹಿಸಲು ನಿರ್ದಿಷ್ಟವಾಗಿ ಬಳಸಲಾಗುತ್ತದೆ. ಆದರೆ, ಏಕೆಂದರೆ "ರಿಜಿಸ್ಟ್ರಿ" ಮಾದರಿಯು "ಉತ್ಪಾದಕ ಮಾದರಿ" ಅಲ್ಲ, ಆದರೆ "ಸಿಂಗಲ್ಟನ್" ಗೆ ಸಂಬಂಧಿಸಿದಂತೆ "ರಿಜಿಸ್ಟರ್" ಅನ್ನು ಪರಿಗಣಿಸಲು ನಾನು ಬಯಸುತ್ತೇನೆ.ಅದಕ್ಕಾಗಿಯೇ ನಾವು ಒಂದು ಮಾದರಿಯೊಂದಿಗೆ ಬಂದಿದ್ದೇವೆ ಮಲ್ಟಿಟನ್, ಅದರ ಪ್ರಕಾರಅದರ ಮಧ್ಯಭಾಗದಲ್ಲಿ, ಇದು ಹಲವಾರು "ಸಿಂಗಲ್ಸ್" ಅನ್ನು ಒಳಗೊಂಡಿರುವ "ರಿಜಿಸ್ಟ್ರಿ" ಆಗಿದೆ, ಪ್ರತಿಯೊಂದೂ ತನ್ನದೇ ಆದ "ಹೆಸರನ್ನು" ಹೊಂದಿದ್ದು ಅದನ್ನು ಪ್ರವೇಶಿಸಬಹುದು.

ಚಿಕ್ಕದು: ಈ ವರ್ಗದ ವಸ್ತುಗಳನ್ನು ರಚಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ, ಆದರೆ ನೀವು ವಸ್ತುವನ್ನು ಹೆಸರಿಸಿದರೆ ಮಾತ್ರ. ನಿಜ ಜೀವನದ ಉದಾಹರಣೆ ಇಲ್ಲ, ಆದರೆ ನಾನು ಈ ಕೆಳಗಿನ ಉದಾಹರಣೆಯನ್ನು ಇಂಟರ್ನೆಟ್‌ನಲ್ಲಿ ಕಂಡುಕೊಂಡಿದ್ದೇನೆ:

ವರ್ಗ ಡೇಟಾಬೇಸ್ (ಖಾಸಗಿ ಸ್ಥಿರ $ನಿದರ್ಶನಗಳು = ಶ್ರೇಣಿ(); ಖಾಸಗಿ ಕಾರ್ಯ __ನಿರ್ಮಾಣ() () ಖಾಸಗಿ ಕಾರ್ಯ __clone() ( ) ಸಾರ್ವಜನಿಕ ಸ್ಥಿರ ಕಾರ್ಯ getInstance($key) ( if(!array_key_exists($key, self::$instances)) ( self ::$ instances[$key] = new self(); ) ಸ್ವತ::$instances[$key]; ) ) $master = ಡೇಟಾಬೇಸ್::getInstance("ಮಾಸ್ಟರ್"); var_dump ($ ಮಾಸ್ಟರ್); // ಆಬ್ಜೆಕ್ಟ್(ಡೇಟಾಬೇಸ್)#1 (0) ( ) $ಲಾಗರ್ = ಡೇಟಾಬೇಸ್ ::getInstance("ಲಾಗರ್"); var_dump ($ಲಾಗರ್); // ಆಬ್ಜೆಕ್ಟ್(ಡೇಟಾಬೇಸ್)#2 (0) ( ) $masterDupe = ಡೇಟಾಬೇಸ್ ::getInstance("ಮಾಸ್ಟರ್"); var_dump ($masterDupe); // ಆಬ್ಜೆಕ್ಟ್(ಡೇಟಾಬೇಸ್)#1 (0) ( ) // ಮಾರಣಾಂತಿಕ ದೋಷ: ಖಾಸಗಿ ಡೇಟಾಬೇಸ್‌ಗೆ ಕರೆ ಮಾಡಿ::__ಕನ್ಸ್ಟ್ರಕ್ಟ್() ಅಮಾನ್ಯ ಸಂದರ್ಭದಿಂದ $dbFatalError = ಹೊಸ ಡೇಟಾಬೇಸ್(); // PHP ಮಾರಕ ದೋಷ: ಖಾಸಗಿ ಡೇಟಾಬೇಸ್‌ಗೆ ಕರೆ ಮಾಡಿ::__clone() $dbCloneError = ಕ್ಲೋನ್ $ಮಾಸ್ಟರ್‌ಡ್ಯೂಪ್;

ಆಬ್ಜೆಕ್ಟ್ ಪೂಲ್

ಮೂಲಭೂತವಾಗಿ ಈ ಮಾದರಿ "ರಿಜಿಸ್ಟ್ರಿ" ಕೇವಲ ವಸ್ತುಗಳನ್ನು ಸಂಗ್ರಹಿಸುತ್ತದೆ, ಯಾವುದೇ ತಂತಿಗಳು, ಸರಣಿಗಳು ಇತ್ಯಾದಿ. ಡೇಟಾ ಪ್ರಕಾರಗಳು.

ಕಾರ್ಖಾನೆ

ಮಾದರಿಯ ಸಾರವನ್ನು ಅದರ ಹೆಸರಿನಿಂದ ಸಂಪೂರ್ಣವಾಗಿ ವಿವರಿಸಲಾಗಿದೆ. ಜ್ಯೂಸ್ ಬಾಕ್ಸ್‌ಗಳಂತಹ ಕೆಲವು ವಸ್ತುಗಳನ್ನು ನೀವು ಪಡೆಯಬೇಕಾದಾಗ, ಅವುಗಳನ್ನು ಕಾರ್ಖಾನೆಯಲ್ಲಿ ಹೇಗೆ ತಯಾರಿಸಲಾಗುತ್ತದೆ ಎಂಬುದನ್ನು ನೀವು ತಿಳಿದುಕೊಳ್ಳಬೇಕಾಗಿಲ್ಲ. "ನನಗೆ ಕಿತ್ತಳೆ ರಸದ ಪೆಟ್ಟಿಗೆಯನ್ನು ಕೊಡು" ಎಂದು ನೀವು ಸರಳವಾಗಿ ಹೇಳುತ್ತೀರಿ ಮತ್ತು "ಫ್ಯಾಕ್ಟರಿ" ನಿಮಗೆ ಅಗತ್ಯವಿರುವ ಪ್ಯಾಕೇಜ್ ಅನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ. ಹೇಗೆ? ಇದೆಲ್ಲವನ್ನೂ ಕಾರ್ಖಾನೆಯಿಂದಲೇ ನಿರ್ಧರಿಸಲಾಗುತ್ತದೆ, ಉದಾಹರಣೆಗೆ, ಇದು ಈಗಾಗಲೇ ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಮಾನದಂಡವನ್ನು "ನಕಲು ಮಾಡುತ್ತದೆ". "ಕಾರ್ಖಾನೆ" ಯ ಮುಖ್ಯ ಉದ್ದೇಶವೆಂದರೆ, ಅಗತ್ಯವಿದ್ದರೆ, ಜ್ಯೂಸ್ ಪ್ಯಾಕೇಜ್‌ನ "ಗೋಚರಿಸುವ" ಪ್ರಕ್ರಿಯೆಯನ್ನು ಬದಲಾಯಿಸಲು ಸಾಧ್ಯವಾಗುವಂತೆ ಮಾಡುವುದು, ಮತ್ತು ಗ್ರಾಹಕರು ಸ್ವತಃ ಈ ಬಗ್ಗೆ ಏನನ್ನೂ ಹೇಳಬೇಕಾಗಿಲ್ಲ, ಆದ್ದರಿಂದ ಅವರು ಅದನ್ನು ವಿನಂತಿಸಬಹುದು. ಮೊದಲಿನಂತೆ. ನಿಯಮದಂತೆ, ಒಂದು ಕಾರ್ಖಾನೆಯು ಕೇವಲ ಒಂದು ರೀತಿಯ "ಉತ್ಪನ್ನ" ದ "ಉತ್ಪಾದನೆ" ಯಲ್ಲಿ ತೊಡಗಿಸಿಕೊಂಡಿದೆ. ಕಾರ್ ಟೈರ್ಗಳ ಉತ್ಪಾದನೆಯನ್ನು ಗಣನೆಗೆ ತೆಗೆದುಕೊಂಡು "ಜ್ಯೂಸ್ ಫ್ಯಾಕ್ಟರಿ" ಅನ್ನು ರಚಿಸಲು ಶಿಫಾರಸು ಮಾಡುವುದಿಲ್ಲ. ಜೀವನದಂತೆಯೇ, ಕಾರ್ಖಾನೆಯ ಮಾದರಿಯನ್ನು ಹೆಚ್ಚಾಗಿ ಒಬ್ಬ ವ್ಯಕ್ತಿಯಿಂದ ರಚಿಸಲಾಗುತ್ತದೆ.

ಅಮೂರ್ತ ವರ್ಗ AnimalAbstract (ಸಂರಕ್ಷಿತ $ಜಾತಿಗಳು; ಸಾರ್ವಜನಿಕ ಕಾರ್ಯ getSpecies() ($this->ಜಾತಿಗಳನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ; ) ) ವರ್ಗದ ಬೆಕ್ಕು AnimalAbstract ಅನ್ನು ವಿಸ್ತರಿಸುತ್ತದೆ ( $species = "cat"; ) ವರ್ಗ ನಾಯಿ AnimalAbstract ಅನ್ನು ವಿಸ್ತರಿಸುತ್ತದೆ (ರಕ್ಷಿತ $ ಜಾತಿಗಳು = "ನಾಯಿ"; ) ವರ್ಗ ಅನಿಮಲ್ ಫ್ಯಾಕ್ಟರಿ ( ಸಾರ್ವಜನಿಕ ಸ್ಥಿರ ಕಾರ್ಯ ಕಾರ್ಖಾನೆ($ ಪ್ರಾಣಿ) ( ಸ್ವಿಚ್ ($ ಪ್ರಾಣಿ) (ಕೇಸ್ "ಕ್ಯಾಟ್": $obj = ಹೊಸ ಬೆಕ್ಕು(); ಬ್ರೇಕ್; ಕೇಸ್ "ನಾಯಿ": $obj = ಹೊಸ ನಾಯಿ(); ಬ್ರೇಕ್; ಡೀಫಾಲ್ಟ್ : ಹೊಸ ವಿನಾಯಿತಿಯನ್ನು ಎಸೆಯಿರಿ("ಪ್ರಾಣಿ ಕಾರ್ಖಾನೆಯು ಜಾತಿಯ ಪ್ರಾಣಿಗಳನ್ನು ರಚಿಸಲಾಗಲಿಲ್ಲ "" . $ಪ್ರಾಣಿ . """, 1000); ) $obj ಹಿಂತಿರುಗಿ; ) $cat = AnimalFactory::factory("cat"); // ಆಬ್ಜೆಕ್ಟ್(ಕ್ಯಾಟ್)#1 ಎಕೋ $ಕ್ಯಾಟ್->ಗೆಟ್‌ಸ್ಪೀಸೀಸ್(); // ಬೆಕ್ಕು $ ನಾಯಿ = ಅನಿಮಲ್ ಫ್ಯಾಕ್ಟರಿ :: ಕಾರ್ಖಾನೆ ("ನಾಯಿ"); // ಆಬ್ಜೆಕ್ಟ್(ನಾಯಿ)#1 ಪ್ರತಿಧ್ವನಿ $ಡಾಗ್->ಗೆಟ್‌ಸ್ಪೀಸೀಸ್(); // ನಾಯಿ $ ಹಿಪ್ಪೋ = ಅನಿಮಲ್ ಫ್ಯಾಕ್ಟರಿ :: ಕಾರ್ಖಾನೆ ("ಹಿಪಪಾಟಮಸ್"); // ಇದು ವಿನಾಯಿತಿಯನ್ನು ಎಸೆಯುತ್ತದೆ

ಕಾರ್ಖಾನೆಯ ವಿಧಾನವು ಒಂದು ಮಾದರಿಯಾಗಿದೆ ಎಂಬ ಅಂಶಕ್ಕೆ ನಾನು ನಿಮ್ಮ ಗಮನವನ್ನು ಸೆಳೆಯಲು ಬಯಸುತ್ತೇನೆ; ಇದನ್ನು ಫ್ಯಾಕ್ಟರಿ ವಿಧಾನ ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ.

ಬಿಲ್ಡರ್ (ಬಿಲ್ಡರ್)

ಆದ್ದರಿಂದ, "ಫ್ಯಾಕ್ಟರಿ" ಎಂಬುದು ಪಾನೀಯಗಳ ವಿತರಣಾ ಯಂತ್ರವಾಗಿದೆ ಎಂದು ನಾವು ಈಗಾಗಲೇ ಅರ್ಥಮಾಡಿಕೊಂಡಿದ್ದೇವೆ, ಅದು ಈಗಾಗಲೇ ಎಲ್ಲವನ್ನೂ ಸಿದ್ಧಪಡಿಸಿದೆ ಮತ್ತು ನಿಮಗೆ ಬೇಕಾದುದನ್ನು ನೀವು ಹೇಳುತ್ತೀರಿ. "ಬಿಲ್ಡರ್" ಎಂಬುದು ಈ ಪಾನೀಯಗಳನ್ನು ಉತ್ಪಾದಿಸುವ ಮತ್ತು ಎಲ್ಲಾ ಸಂಕೀರ್ಣ ಕಾರ್ಯಾಚರಣೆಗಳನ್ನು ಒಳಗೊಂಡಿರುವ ಒಂದು ಸಸ್ಯವಾಗಿದೆ ಮತ್ತು ವಿನಂತಿಯನ್ನು ಅವಲಂಬಿಸಿ ಸರಳವಾದವುಗಳಿಂದ (ಪ್ಯಾಕೇಜಿಂಗ್, ಲೇಬಲ್, ನೀರು, ಸುವಾಸನೆ, ಇತ್ಯಾದಿ) ಸಂಕೀರ್ಣ ವಸ್ತುಗಳನ್ನು ಜೋಡಿಸಬಹುದು.

ಕ್ಲಾಸ್ ಬಾಟಲ್ (ಸಾರ್ವಜನಿಕ $ಹೆಸರು; ಸಾರ್ವಜನಿಕ $ ಲೀಟರ್; ) /** * ಎಲ್ಲಾ ಬಿಲ್ಡರ್‌ಗಳು */ ಇಂಟರ್‌ಫೇಸ್ ಬಾಟಲ್‌ಬಿಲ್ಡರ್ ಇಂಟರ್‌ಫೇಸ್ (ಸಾರ್ವಜನಿಕ ಕಾರ್ಯ ಸೆಟ್‌ನೇಮ್ (); ಸಾರ್ವಜನಿಕ ಫಂಕ್ಷನ್ ಸೆಟ್‌ಲಿಟರ್ಸ್ (); ಸಾರ್ವಜನಿಕ ಫಂಕ್ಷನ್ ಗೆಟ್‌ರಿಸಲ್ಟ್ (); ಬಾಟಲ್; ಸಾರ್ವಜನಿಕ ಕಾರ್ಯ __ನಿರ್ಮಾಣ () ( $this->ಬಾಟಲ್ = ಹೊಸ ಬಾಟಲ್ (); ) ಸಾರ್ವಜನಿಕ ಕಾರ್ಯ ಸೆಟ್ ಹೆಸರು ($ ಮೌಲ್ಯ) ($this->ಬಾಟಲ್->ಹೆಸರು = $ಮೌಲ್ಯ; ) ಸಾರ್ವಜನಿಕ ಕಾರ್ಯ ಸೆಟ್‌ಲಿಟರ್‌ಗಳು ($ಮೌಲ್ಯ) ($ ಈ->ಬಾಟಲ್->ಲೀಟರ್‌ಗಳು = $ಮೌಲ್ಯ;) ಸಾರ್ವಜನಿಕ ಫಂಕ್ಷನ್ getResult() ($this->ಬಾಟಲ್ ಹಿಂತಿರುಗಿ; ) ) $juice = ಹೊಸ CocaColaBuilder (); $juice->setName("ಕೋಕಾ-ಕೋಲಾ ಲೈಟ್"); $juice->setLiters(2); $juice->getResult();

ಮೂಲಮಾದರಿ

ಕಾರ್ಖಾನೆಯನ್ನು ಹೋಲುತ್ತದೆ, ಇದು ವಸ್ತುಗಳನ್ನು ರಚಿಸಲು ಸಹ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ, ಆದರೆ ಸ್ವಲ್ಪ ವಿಭಿನ್ನ ವಿಧಾನದೊಂದಿಗೆ. ಬಾರ್‌ನಲ್ಲಿ ನಿಮ್ಮನ್ನು ಕಲ್ಪಿಸಿಕೊಳ್ಳಿ, ನೀವು ಬಿಯರ್ ಕುಡಿಯುತ್ತಿದ್ದೀರಿ ಮತ್ತು ಅದು ಖಾಲಿಯಾಗುತ್ತಿದೆ, ನೀವು ಬಾರ್ಟೆಂಡರ್‌ಗೆ ಹೇಳುತ್ತೀರಿ - ನನ್ನನ್ನು ಅದೇ ರೀತಿಯ ಇನ್ನೊಬ್ಬನನ್ನಾಗಿ ಮಾಡಿ. ಬಾರ್ಟೆಂಡರ್ ಪ್ರತಿಯಾಗಿ ನೀವು ಕುಡಿಯುವ ಬಿಯರ್ ಅನ್ನು ನೋಡುತ್ತಾನೆ ಮತ್ತು ನೀವು ಕೇಳಿದಂತೆ ನಕಲು ಮಾಡುತ್ತಾನೆ. PHP ಈಗಾಗಲೇ ಈ ಮಾದರಿಯ ಅನುಷ್ಠಾನವನ್ನು ಹೊಂದಿದೆ, ಇದನ್ನು ಕರೆಯಲಾಗುತ್ತದೆ.

$newJuice = ಕ್ಲೋನ್ $ ಜ್ಯೂಸ್;

ಸೋಮಾರಿಯಾದ ಆರಂಭ

ಉದಾಹರಣೆಗೆ, ಮುಖ್ಯಸ್ಥರು ವಿವಿಧ ರೀತಿಯ ಚಟುವಟಿಕೆಗಳಿಗಾಗಿ ವರದಿಗಳ ಪಟ್ಟಿಯನ್ನು ನೋಡುತ್ತಾರೆ ಮತ್ತು ಈ ವರದಿಗಳು ಈಗಾಗಲೇ ಅಸ್ತಿತ್ವದಲ್ಲಿವೆ ಎಂದು ಭಾವಿಸುತ್ತಾರೆ, ಆದರೆ ವಾಸ್ತವವಾಗಿ ವರದಿಗಳ ಹೆಸರುಗಳನ್ನು ಮಾತ್ರ ಪ್ರದರ್ಶಿಸಲಾಗುತ್ತದೆ ಮತ್ತು ವರದಿಗಳನ್ನು ಇನ್ನೂ ರಚಿಸಲಾಗಿಲ್ಲ ಮತ್ತು ಅವುಗಳನ್ನು ಮಾತ್ರ ರಚಿಸಲಾಗುತ್ತದೆ. ಆದೇಶದ ಮೇರೆಗೆ (ಉದಾಹರಣೆಗೆ, ವೀಕ್ಷಿಸಿ ವರದಿ ಬಟನ್ ಕ್ಲಿಕ್ ಮಾಡುವ ಮೂಲಕ). ಸೋಮಾರಿಯಾದ ಪ್ರಾರಂಭದ ವಿಶೇಷ ಪ್ರಕರಣವೆಂದರೆ ಅದನ್ನು ಪ್ರವೇಶಿಸುವ ಸಮಯದಲ್ಲಿ ವಸ್ತುವನ್ನು ರಚಿಸುವುದು.ವಿಕಿಪೀಡಿಯಾದಲ್ಲಿ ನೀವು ಆಸಕ್ತಿದಾಯಕವಾದದನ್ನು ಕಾಣಬಹುದು, ಆದರೆ... ಸಿದ್ಧಾಂತದ ಪ್ರಕಾರ, php ನಲ್ಲಿ ಸರಿಯಾದ ಉದಾಹರಣೆಯೆಂದರೆ, ಉದಾಹರಣೆಗೆ, ಒಂದು ಕಾರ್ಯ

ಅವಲಂಬನೆ ಇಂಜೆಕ್ಷನ್

ಅವಲಂಬನೆ ಇಂಜೆಕ್ಷನ್ ಕೆಲವು ಕಾರ್ಯಚಟುವಟಿಕೆಗಳ ಜವಾಬ್ದಾರಿಯ ಭಾಗವನ್ನು ಇತರ ವಸ್ತುಗಳಿಗೆ ವರ್ಗಾಯಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ. ಉದಾಹರಣೆಗೆ, ನಾವು ಹೊಸ ಸಿಬ್ಬಂದಿಯನ್ನು ನೇಮಿಸಿಕೊಳ್ಳಬೇಕಾದರೆ, ನಾವು ನಮ್ಮದೇ ಆದ ಮಾನವ ಸಂಪನ್ಮೂಲ ವಿಭಾಗವನ್ನು ರಚಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ, ಆದರೆ ನೇಮಕಾತಿ ಕಂಪನಿಯ ಮೇಲೆ ಅವಲಂಬನೆಯನ್ನು ಪರಿಚಯಿಸುತ್ತೇವೆ, ಅದು ನಮ್ಮ ಮೊದಲ ವಿನಂತಿಯ ಮೇರೆಗೆ “ನಮಗೆ ಒಬ್ಬ ವ್ಯಕ್ತಿ ಬೇಕು” ಎಂದು ಕೆಲಸ ಮಾಡುತ್ತದೆ. ಮಾನವ ಸಂಪನ್ಮೂಲ ಇಲಾಖೆಯೇ, ಅಥವಾ ಈ ಸೇವೆಗಳನ್ನು ಒದಗಿಸುವ ಮತ್ತೊಂದು ಕಂಪನಿಯನ್ನು ("ಸೇವೆ ಲೊಕೇಟರ್" ಬಳಸಿ) ಕಂಡುಕೊಳ್ಳುತ್ತದೆ.
"ಅವಲಂಬಿತ ಇಂಜೆಕ್ಷನ್" ಒಟ್ಟಾರೆ ಕಾರ್ಯವನ್ನು ಕಳೆದುಕೊಳ್ಳದೆ ಕಂಪನಿಯ ಪ್ರತ್ಯೇಕ ಭಾಗಗಳನ್ನು ಬದಲಾಯಿಸಲು ಮತ್ತು ವಿನಿಮಯ ಮಾಡಿಕೊಳ್ಳಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ.

ವರ್ಗ AppleJuice () // ಈ ವಿಧಾನವು ಅವಲಂಬನೆ ಇಂಜೆಕ್ಷನ್ ಮಾದರಿಯ ಪ್ರಾಚೀನ ಅನುಷ್ಠಾನವಾಗಿದೆ ಮತ್ತು ಮುಂದೆ ನೀವು ಈ ಕಾರ್ಯವನ್ನು ನೋಡುತ್ತೀರಿ getBottleJuice())( $obj = ಹೊಸದು ಸೇಬಿನ ರಸಸೇಬಿನ ರಸ$obj)( $obj ಹಿಂತಿರುಗಿ; ) ) $bottleJuice = getBottleJuice();

ಈಗ ನಮಗೆ ಆಪಲ್ ಜ್ಯೂಸ್ ಬೇಡ, ಕಿತ್ತಳೆ ರಸ ಬೇಕು ಎಂದು ಊಹಿಸಿಕೊಳ್ಳಿ.

ವರ್ಗ AppleJuice() ವರ್ಗ ಕಿತ್ತಳೆ ರಸ() // ಈ ವಿಧಾನವು ಅವಲಂಬನೆ ಇಂಜೆಕ್ಷನ್ ಕಾರ್ಯವನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುತ್ತದೆ getBottleJuice())( $obj = ಹೊಸದು ಕಿತ್ತಳೆ ರಸ; // ವಸ್ತುವನ್ನು ಪರಿಶೀಲಿಸೋಣ, ಇಲ್ಲದಿದ್ದರೆ ಅವರು ಇದ್ದಕ್ಕಿದ್ದಂತೆ ನಮಗೆ ಬಿಯರ್ ಅನ್ನು ಜಾರಿದರು (ಬಿಯರ್ ಜ್ಯೂಸ್ ಅಲ್ಲ) ಕಿತ್ತಳೆ ರಸ$obj)($obj ಹಿಂತಿರುಗಿ;) )

ನೀವು ನೋಡುವಂತೆ, ನಾವು ರಸದ ಪ್ರಕಾರವನ್ನು ಮಾತ್ರ ಬದಲಾಯಿಸಬೇಕಾಗಿತ್ತು, ಆದರೆ ರಸದ ಪ್ರಕಾರದ ಚೆಕ್ ಅನ್ನು ಸಹ ಬದಲಾಯಿಸಬೇಕಾಗಿತ್ತು, ಅದು ತುಂಬಾ ಅನುಕೂಲಕರವಲ್ಲ. ಅವಲಂಬನೆ ವಿಲೋಮ ತತ್ವವನ್ನು ಬಳಸುವುದು ಹೆಚ್ಚು ಸರಿಯಾಗಿದೆ:

ಇಂಟರ್ಫೇಸ್ ಜ್ಯೂಸ್ () ಕ್ಲಾಸ್ ಆಪಲ್ ಜ್ಯೂಸ್ ಜ್ಯೂಸ್ ಅನ್ನು ಅಳವಡಿಸುತ್ತದೆ () ಕ್ಲಾಸ್ ಆರೆಂಜ್ ಜ್ಯೂಸ್ ಜ್ಯೂಸ್ () ಫಂಕ್ಷನ್ ಗೆಟ್ ಬಾಟಲ್ ಜ್ಯೂಸ್ ())( $obj = ಹೊಸ ಆರೆಂಜ್ ಜ್ಯೂಸ್; // ವಸ್ತುವನ್ನು ಪರಿಶೀಲಿಸಿ, ಅವರು ನಮಗೆ ಬಿಯರ್ ಜಾರಿದರೆ (ಬಿಯರ್ ಜ್ಯೂಸ್ ಅಲ್ಲ) ಜ್ಯೂಸ್$obj)($obj ಹಿಂತಿರುಗಿ;) )

ಅವಲಂಬನೆ ವಿಲೋಮವು ಕೆಲವೊಮ್ಮೆ ಅವಲಂಬನೆ ಇಂಜೆಕ್ಷನ್‌ನೊಂದಿಗೆ ಗೊಂದಲಕ್ಕೊಳಗಾಗುತ್ತದೆ, ಆದರೆ ಅವುಗಳನ್ನು ಗೊಂದಲಗೊಳಿಸುವ ಅಗತ್ಯವಿಲ್ಲ, ಏಕೆಂದರೆ ಅವಲಂಬನೆ ವಿಲೋಮವು ಒಂದು ತತ್ವವಾಗಿದೆ, ಒಂದು ಮಾದರಿಯಲ್ಲ.

ಸೇವಾ ಲೊಕೇಟರ್

"ಸರ್ವಿಸ್ ಲೊಕೇಟರ್" ಎನ್ನುವುದು "ಅವಲಂಬನೆ ಇಂಜೆಕ್ಷನ್" ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುವ ವಿಧಾನವಾಗಿದೆ. ಇದು ಪ್ರಾರಂಭಿಕ ಕೋಡ್ ಅನ್ನು ಅವಲಂಬಿಸಿ ವಿವಿಧ ರೀತಿಯ ವಸ್ತುಗಳನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ. ಖರೀದಿದಾರರು ಎಲ್ಲಿ ಬೇಕಾದರೂ ಬಿಲ್ಡರ್, ಕಾರ್ಖಾನೆ ಅಥವಾ ಇನ್ನಾವುದೋ ಮೂಲಕ ರಚಿಸಲಾದ ನಮ್ಮ ಜ್ಯೂಸ್ ಪ್ಯಾಕೇಜ್ ಅನ್ನು ತಲುಪಿಸುವ ಕಾರ್ಯವಾಗಲಿ. ನಾವು ಲೊಕೇಟರ್‌ಗೆ "ನಮಗೆ ವಿತರಣಾ ಸೇವೆಯನ್ನು ನೀಡಿ" ಎಂದು ಹೇಳುತ್ತೇವೆ ಮತ್ತು ಬಯಸಿದ ವಿಳಾಸಕ್ಕೆ ರಸವನ್ನು ತಲುಪಿಸಲು ಸೇವೆಯನ್ನು ಕೇಳುತ್ತೇವೆ. ಇಂದು ಒಂದು ಸೇವೆ ಇದೆ, ಮತ್ತು ನಾಳೆ ಇನ್ನೊಂದು ಇರಬಹುದು. ಇದು ಯಾವ ನಿರ್ದಿಷ್ಟ ಸೇವೆಯಾಗಿದೆ ಎಂಬುದು ನಮಗೆ ಅಪ್ರಸ್ತುತವಾಗುತ್ತದೆ, ಈ ಸೇವೆಯು ನಾವು ಏನು ಹೇಳುತ್ತೇವೆ ಮತ್ತು ನಾವು ಅದನ್ನು ಎಲ್ಲಿ ಹೇಳುತ್ತೇವೆ ಎಂಬುದನ್ನು ನಾವು ತಿಳಿದುಕೊಳ್ಳುವುದು ಮುಖ್ಯವಾಗಿದೆ. ಪ್ರತಿಯಾಗಿ, ಸೇವೆಗಳು "ವಿತರಣೆ" ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುತ್ತವೆ<предмет>ಮೇಲೆ<адрес>».

ನಾವು ನಿಜ ಜೀವನದ ಬಗ್ಗೆ ಮಾತನಾಡಿದರೆ, ಬಹುಶಃ ಸರ್ವಿಸ್ ಲೊಕೇಟರ್‌ನ ಉತ್ತಮ ಉದಾಹರಣೆಯೆಂದರೆ PDO PHP ವಿಸ್ತರಣೆ, ಏಕೆಂದರೆ ಇಂದು ನಾವು MySQL ಡೇಟಾಬೇಸ್‌ನೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುತ್ತೇವೆ ಮತ್ತು ನಾಳೆ ನಾವು PostgreSQL ನೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಬಹುದು. ನೀವು ಈಗಾಗಲೇ ಅರ್ಥಮಾಡಿಕೊಂಡಂತೆ, ಅದು ತನ್ನ ಡೇಟಾವನ್ನು ಯಾವ ಡೇಟಾಬೇಸ್‌ಗೆ ಕಳುಹಿಸುತ್ತದೆ ಎಂಬುದು ನಮ್ಮ ವರ್ಗಕ್ಕೆ ಅಪ್ರಸ್ತುತವಾಗುತ್ತದೆ, ಅದು ಅದನ್ನು ಮಾಡಬಹುದು ಎಂಬುದು ಮುಖ್ಯ.

$db = ಹೊಸ PDO(" mysql:dbname=test;host=localhost", $user, $pass); $db = ಹೊಸ PDO(" pgsql:dbname=test host=localhost", $user, $pass);

ಡಿಪೆಂಡೆನ್ಸಿ ಇಂಜೆಕ್ಷನ್ ಮತ್ತು ಸರ್ವಿಸ್ ಲೊಕೇಟರ್ ನಡುವಿನ ವ್ಯತ್ಯಾಸ

ನೀವು ಇನ್ನೂ ಗಮನಿಸದಿದ್ದರೆ, ನಾನು ವಿವರಿಸಲು ಬಯಸುತ್ತೇನೆ. ಅವಲಂಬನೆ ಇಂಜೆಕ್ಷನ್ಪರಿಣಾಮವಾಗಿ, ಇದು ಸೇವೆಯನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ (ಇದು ಎಲ್ಲೋ ಏನನ್ನಾದರೂ ತಲುಪಿಸಬಹುದು) ಆದರೆ ಅದು ಬಳಸುವ ಡೇಟಾವನ್ನು ಬಳಸುವ ವಸ್ತು.

ಸಾಫ್ಟ್‌ವೇರ್ ವ್ಯವಸ್ಥೆಗಳು ಮತ್ತು ಮಾದರಿ ವ್ಯವಹಾರ ಪ್ರಕ್ರಿಯೆಗಳನ್ನು ಅಭಿವೃದ್ಧಿಪಡಿಸಲು ಯೋಜನೆಗಳನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುವಾಗ, ವಿಭಿನ್ನ ಯೋಜನೆಗಳಲ್ಲಿನ ಸಮಸ್ಯೆಗಳಿಗೆ ಪರಿಹಾರಗಳು ಒಂದೇ ರೀತಿಯ ರಚನಾತ್ಮಕ ಲಕ್ಷಣಗಳನ್ನು ಹೊಂದಿರುವಾಗ ಸಂದರ್ಭಗಳು ಉದ್ಭವಿಸುತ್ತವೆ. ಒಳಗೆ ಒಂದೇ ರೀತಿಯ ಮಾದರಿಗಳು ಅಥವಾ ರಚನೆಗಳನ್ನು ಗುರುತಿಸುವ ಪ್ರಯತ್ನಗಳು ವಸ್ತು-ಆಧಾರಿತ ವಿಶ್ಲೇಷಣೆ ಮತ್ತು ವಿನ್ಯಾಸಒಂದು ಮಾದರಿಯ ಪರಿಕಲ್ಪನೆಯ ಹೊರಹೊಮ್ಮುವಿಕೆಗೆ ಕಾರಣವಾಯಿತು, ಇದು ಅಮೂರ್ತ ವರ್ಗದಿಂದ ಆಧುನಿಕ CASE ಉಪಕರಣಗಳ ಅನಿವಾರ್ಯ ಗುಣಲಕ್ಷಣವಾಗಿ ಮಾರ್ಪಟ್ಟಿದೆ

OOAP ಮಾದರಿಗಳು ವಿವರಗಳ ಮಟ್ಟ ಮತ್ತು ಅಮೂರ್ತತೆಯ ಮಟ್ಟದಲ್ಲಿ ಭಿನ್ನವಾಗಿರುತ್ತವೆ. ಅವರ ಅಪ್ಲಿಕೇಶನ್‌ನ ವರ್ಗಗಳ ಪ್ರಕಾರ ಮಾದರಿಗಳ ಕೆಳಗಿನ ಸಾಮಾನ್ಯ ವರ್ಗೀಕರಣವನ್ನು ಪ್ರಸ್ತಾಪಿಸಲಾಗಿದೆ:

  • ವಾಸ್ತುಶಿಲ್ಪದ ಮಾದರಿಗಳು
  • ವಿನ್ಯಾಸ ಮಾದರಿಗಳು
  • ವಿಶ್ಲೇಷಣೆ ಮಾದರಿಗಳು
  • ಪರೀಕ್ಷಾ ಮಾದರಿಗಳು
  • ಅನುಷ್ಠಾನದ ಮಾದರಿಗಳು

ವಾಸ್ತುಶಿಲ್ಪದ ಮಾದರಿಗಳು- ಪೂರ್ವನಿರ್ಧರಿತ ಉಪವ್ಯವಸ್ಥೆಗಳ ಒಂದು ಸೆಟ್ ಅವರ ಜವಾಬ್ದಾರಿಗಳು, ನಿಯಮಗಳು ಮತ್ತು ಅವುಗಳ ನಡುವೆ ಸಂಬಂಧಗಳನ್ನು ಸ್ಥಾಪಿಸುವ ಮೂಲ ತತ್ವಗಳ ವಿವರಣೆಯೊಂದಿಗೆ.

ವಾಸ್ತುಶಿಲ್ಪದ ಮಾದರಿಗಳುಸಾಫ್ಟ್‌ವೇರ್ ಸಿಸ್ಟಮ್‌ಗಳನ್ನು ರಚಿಸುವುದಕ್ಕಾಗಿ ಮೂಲಭೂತ ಯೋಜನೆಗಳ ವಿವರಣೆಗಾಗಿ ಉದ್ದೇಶಿಸಲಾಗಿದೆ. ಈ ವರ್ಗದಲ್ಲಿನ ಅತ್ಯಂತ ಪ್ರಸಿದ್ಧ ಮಾದರಿಗಳೆಂದರೆ GRASP (ಸಾಮಾನ್ಯ ಜವಾಬ್ದಾರಿ ನಿಯೋಜನೆ ಸಾಫ್ಟ್‌ವೇರ್ ಪ್ಯಾಟರ್ನ್) ಮಾದರಿಗಳು. ಈ ಮಾದರಿಗಳು ಸಿಸ್ಟಮ್ ಮತ್ತು ಸಬ್ಸಿಸ್ಟಮ್ ಮಟ್ಟಗಳಿಗೆ ಅನ್ವಯಿಸುತ್ತವೆ, ಆದರೆ ವರ್ಗ ಮಟ್ಟಕ್ಕೆ ಅಲ್ಲ. ನಿಯಮದಂತೆ, ಅವುಗಳನ್ನು ಸಾಮಾನ್ಯ ರೂಪದಲ್ಲಿ ರೂಪಿಸಲಾಗಿದೆ, ಸಾಂಪ್ರದಾಯಿಕ ಪರಿಭಾಷೆಯನ್ನು ಬಳಸಿ ಮತ್ತು ಅಪ್ಲಿಕೇಶನ್ ಪ್ರದೇಶವನ್ನು ಅವಲಂಬಿಸಿರುವುದಿಲ್ಲ. ಈ ವರ್ಗದ ಮಾದರಿಗಳನ್ನು ಕೆ. ಲಾರ್ಮನ್ ಅವರು ವ್ಯವಸ್ಥಿತಗೊಳಿಸಿದ್ದಾರೆ ಮತ್ತು ವಿವರಿಸಿದ್ದಾರೆ.

ವಿನ್ಯಾಸ ಮಾದರಿಗಳು- ಸಾಫ್ಟ್‌ವೇರ್ ಸಿಸ್ಟಮ್‌ನ ಉಪವ್ಯವಸ್ಥೆಗಳು ಅಥವಾ ಘಟಕಗಳ ರಚನೆ ಮತ್ತು ಅವುಗಳ ನಡುವಿನ ಸಂಬಂಧಗಳನ್ನು ಸ್ಪಷ್ಟಪಡಿಸಲು ವಿಶೇಷ ರೇಖಾಚಿತ್ರಗಳು.

ವಿನ್ಯಾಸ ಮಾದರಿಗಳುಒಂದು ನಿರ್ದಿಷ್ಟ ಸನ್ನಿವೇಶದಲ್ಲಿ ಮೂಲ ವಿನ್ಯಾಸ ಸಮಸ್ಯೆಯನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುವ ಸಾಫ್ಟ್‌ವೇರ್ ವ್ಯವಸ್ಥೆಯ ಅಂಶಗಳ ನಡುವಿನ ಪರಸ್ಪರ ಕ್ರಿಯೆಯ ಸಾಮಾನ್ಯ ರಚನೆಯನ್ನು ವಿವರಿಸಿ. ಈ ವರ್ಗದಲ್ಲಿ ಅತ್ಯಂತ ಪ್ರಸಿದ್ಧವಾದ ಮಾದರಿಗಳೆಂದರೆ ಗೋಫ್ (ಗ್ಯಾಂಗ್ ಆಫ್ ಫೋರ್) ಮಾದರಿಗಳು, ಇ. ಗಾಮಾ, ಆರ್. ಹೆಲ್ಮ್, ಆರ್. ಜಾನ್ಸನ್ ಮತ್ತು ಜೆ. ವ್ಲಿಸ್ಸೈಡ್ಸ್ ಅವರ ಹೆಸರನ್ನು ಇಡಲಾಗಿದೆ, ಅವರು ಅವುಗಳನ್ನು ವ್ಯವಸ್ಥಿತಗೊಳಿಸಿ ಸಾಮಾನ್ಯ ವಿವರಣೆಯನ್ನು ಪ್ರಸ್ತುತಪಡಿಸಿದರು. GoF ಮಾದರಿಗಳು 23 ಮಾದರಿಗಳನ್ನು ಒಳಗೊಂಡಿವೆ. ಈ ಮಾದರಿಗಳು ಅನುಷ್ಠಾನ ಭಾಷೆಯಿಂದ ಸ್ವತಂತ್ರವಾಗಿರುತ್ತವೆ, ಆದರೆ ಅವುಗಳ ಅನುಷ್ಠಾನವು ಅಪ್ಲಿಕೇಶನ್ ಡೊಮೇನ್ ಅನ್ನು ಅವಲಂಬಿಸಿರುತ್ತದೆ.

ಲೇಖನವನ್ನು ಪ್ರಾರಂಭಿಸುವ ಮೊದಲು, ಪ್ರೋಗ್ರಾಮಿಂಗ್‌ನಲ್ಲಿ ವಿನ್ಯಾಸ ಮಾದರಿಗಳ ಕುರಿತು ನನ್ನ ಸ್ನೇಹಿತ ಡೆನಿಸ್ ಪೊರ್ಪ್ಲೆಂಕೊ ಅವರ ವರದಿಯನ್ನು ನೀಡಲು ನಾನು ಬಯಸುತ್ತೇನೆ:

ವಿನ್ಯಾಸದಲ್ಲಿ ಅದೇ ರೀತಿಯ ಆಗಾಗ್ಗೆ ಉದ್ಭವಿಸುವ ಸಮಸ್ಯೆಗಳಿಗೆ ಪರಿಹಾರವಾಗಿ ವಿನ್ಯಾಸ ಮಾದರಿಗಳು ಹುಟ್ಟಿಕೊಂಡಿವೆ ಎಂದು ನಾನು ನಿಮಗೆ ನೆನಪಿಸಲು ಬಯಸುತ್ತೇನೆ. ಆದರೆ ಮುಖ್ಯ ಅಭಿವೃದ್ಧಿ ಸಾಫ್ಟ್‌ವೇರ್ ಅಭಿವೃದ್ಧಿಯಲ್ಲಿತ್ತು. ಮತ್ತು ಸಾಫ್ಟ್‌ವೇರ್ ಅಭಿವೃದ್ಧಿಯ ಸಂದರ್ಭದಲ್ಲಿ ನಾನು ಕಥೆಯನ್ನು ಮುಂದುವರಿಸುತ್ತೇನೆ.

ಮಾದರಿಗಳ ವಿಷಯವು ತುಂಬಾ ವಿಶಾಲವಾಗಿದೆ; ವಿನ್ಯಾಸ ಮಾದರಿಗಳನ್ನು ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಮಾದರಿಗಳು, ಸಿಸ್ಟಮ್ ಆರ್ಕಿಟೆಕ್ಚರ್ ಮಾದರಿಗಳು ಮತ್ತು ಡೇಟಾ ಶೇಖರಣಾ ಮಾದರಿಗಳಂತಹ ಪ್ರಕಾರಗಳಾಗಿ ವಿಂಗಡಿಸಬಹುದು. ಇವುಗಳು ಅತ್ಯಂತ ಜನಪ್ರಿಯ ಮಾದರಿಗಳಾಗಿವೆ, ಇತರವುಗಳಿವೆ. ನಾನು ಅವೆಲ್ಲವನ್ನೂ ಕೆಳಗೆ ಪಟ್ಟಿ ಮಾಡುತ್ತೇನೆ.

ಅನೇಕ ಕಂಪನಿಗಳು ತಮ್ಮ ಅಭ್ಯಾಸದಲ್ಲಿ ಮಾದರಿಗಳನ್ನು ಬಳಸುತ್ತವೆ. ಮಾದರಿಗಳ ಬಳಕೆಯು ಅದರ ಬಾಧಕಗಳನ್ನು ಹೊಂದಿದೆ.
ವಿನ್ಯಾಸ ಮಾದರಿಗಳನ್ನು ಬಳಸುವ ಪ್ರಯೋಜನಗಳು:
- ಉಚಿತ ವಿನ್ಯಾಸದ ಮೇಲೆ ಮಾದರಿಗಳನ್ನು ಬಳಸುವುದರ ಮುಖ್ಯ ಪ್ರಯೋಜನವೆಂದರೆ ಮಾದರಿಯು ಸಮಸ್ಯೆಗೆ ಹೆಸರನ್ನು ನೀಡುತ್ತದೆ ಮತ್ತು ಸಿದ್ಧ-ಸಿದ್ಧ ಅಮೂರ್ತತೆಯ ಮೂಲಕ ಅನೇಕ ಸಮಸ್ಯೆಗಳನ್ನು ಪರಿಹರಿಸುವ ಮಾರ್ಗಗಳನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುತ್ತದೆ
- ಸಿಸ್ಟಮ್ ಡೆವಲಪರ್‌ಗಳ ನಡುವೆ ಸಂವಹನವನ್ನು ಸುಗಮಗೊಳಿಸುತ್ತದೆ
- ವಿನ್ಯಾಸ ಮಾದರಿಗಳ ಬಳಕೆಯು ಸಿದ್ದವಾಗಿರುವ ಕೋಡ್ ಲೈಬ್ರರಿಗಳ ಬಳಕೆಯನ್ನು ಹೋಲುತ್ತದೆ
- ಟೆಂಪ್ಲೇಟ್‌ಗಳ ಸರಿಯಾದ ಬಳಕೆಯು ಡೆವಲಪರ್‌ಗಳಿಗೆ ಅಭಿವೃದ್ಧಿಯ ಅಪೇಕ್ಷಿತ ವೆಕ್ಟರ್ ಅನ್ನು ನಿರ್ಧರಿಸಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ ಮತ್ತು ಅಭಿವೃದ್ಧಿ ಪ್ರಕ್ರಿಯೆಯಲ್ಲಿ ಉದ್ಭವಿಸಬಹುದಾದ ಅನೇಕ ಸಮಸ್ಯೆಗಳನ್ನು ತಪ್ಪಿಸಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ.

ವಿನ್ಯಾಸದ ಮಾದರಿಗಳನ್ನು ಉಂಟುಮಾಡುವ ತೊಂದರೆಗಳು:
- ನನ್ನ ಅಭಿಪ್ರಾಯದಲ್ಲಿ, ಟೆಂಪ್ಲೇಟ್‌ಗಳನ್ನು ಬಳಸುವಲ್ಲಿನ ಪ್ರಮುಖ ಸಮಸ್ಯೆ ಸಿಸ್ಟಮ್ ವಿನ್ಯಾಸ ಮತ್ತು ಅಭಿವೃದ್ಧಿಯಲ್ಲಿ ನಮ್ಯತೆಯ ನಷ್ಟವಾಗಿದೆ
- ಟೆಂಪ್ಲೇಟ್‌ಗಳ ಬಳಕೆಯು ವ್ಯವಸ್ಥೆಯನ್ನು ಸಂಕೀರ್ಣಗೊಳಿಸುತ್ತದೆ
- ಒಂದು ನಿರ್ದಿಷ್ಟ ಮಾದರಿಯನ್ನು ಕುರುಡಾಗಿ ಅನುಸರಿಸುವುದು ಮತ್ತು ಅದನ್ನು ಎಲ್ಲೆಡೆ ಬಳಸುವುದರಿಂದ ವಾಸ್ತುಶಿಲ್ಪ ಮತ್ತು ತಾರ್ಕಿಕ ಸಮಸ್ಯೆಗಳ ಗುಂಪಿಗೆ ಕಾರಣವಾಗಬಹುದು

ಮೂಲ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಮಾದರಿಗಳು

ಮೂಲಭೂತ

ನಿಯೋಗ ಟೆಂಪ್ಲೇಟ್ನಿಯೋಗದ ಮಾದರಿ - ವಸ್ತುವು ಬಾಹ್ಯವಾಗಿ ಕೆಲವು ನಡವಳಿಕೆಯನ್ನು ವ್ಯಕ್ತಪಡಿಸುತ್ತದೆ, ಆದರೆ ವಾಸ್ತವದಲ್ಲಿ ಆ ನಡವಳಿಕೆಯನ್ನು ಸಂಬಂಧಿತ ವಸ್ತುವಿಗೆ ನಿರ್ವಹಿಸುವ ಜವಾಬ್ದಾರಿಯನ್ನು ನಿಯೋಜಿಸುತ್ತದೆ.
ಕ್ರಿಯಾತ್ಮಕ ವಿನ್ಯಾಸ ಮಾದರಿ - ಕಂಪ್ಯೂಟರ್ ಪ್ರೋಗ್ರಾಂನ ಪ್ರತಿಯೊಂದು ಮಾಡ್ಯೂಲ್ ಒಂದೇ ಒಂದು ಜವಾಬ್ದಾರಿಯನ್ನು ಹೊಂದಿದೆ ಮತ್ತು ಅದನ್ನು ಕನಿಷ್ಠವಾಗಿ ನಿರ್ವಹಿಸುತ್ತದೆ ಎಂದು ಖಚಿತಪಡಿಸುತ್ತದೆ ಅಡ್ಡ ಪರಿಣಾಮಗಳುಕಾರ್ಯಕ್ರಮದ ಇತರ ಭಾಗಗಳಿಗೆ.
ಬದಲಾಯಿಸಲಾಗದ ಇಂಟರ್ಫೇಸ್(ಇಮ್ಯೂಟಬಲ್ ಇಂಟರ್ಫೇಸ್) - ಬದಲಾಗದ ವಸ್ತುವಿನ ಸೃಷ್ಟಿ.
ಇಂಟರ್ಫೇಸ್ - ಕಂಪ್ಯೂಟರ್ ಪ್ರೋಗ್ರಾಂಗಳನ್ನು ಸುಲಭವಾಗಿ ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು ಅವುಗಳನ್ನು ರಚಿಸುವ ಸಾಮಾನ್ಯ ವಿಧಾನ.
ಇಂಟರ್ಫೇಸ್ ಮಾರ್ಕರ್(ಮಾರ್ಕರ್ ಇಂಟರ್ಫೇಸ್) - ಮಾರ್ಕರ್ ಇಂಟರ್ಫೇಸ್ನ ಅನುಷ್ಠಾನದ ಉಪಸ್ಥಿತಿ ಅಥವಾ ಅನುಪಸ್ಥಿತಿಯನ್ನು ಗುಣಲಕ್ಷಣವಾಗಿ ಬಳಸಲಾಗುತ್ತದೆ (ಒಂದು ವಸ್ತುವಿನ ಅಸ್ತಿತ್ವದ ಗುರುತುಯಾಗಿ). IN ಆಧುನಿಕ ಭಾಷೆಗಳುಬದಲಿಗೆ ಪ್ರೋಗ್ರಾಮಿಂಗ್, ಗುಣಲಕ್ಷಣಗಳು ಅಥವಾ ಟಿಪ್ಪಣಿಗಳನ್ನು ಬಳಸಬಹುದು.
ಗುಣಲಕ್ಷಣಗಳ ಧಾರಕ(ಪ್ರಾಪರ್ಟಿ ಕಂಟೇನರ್) - ಹೊಸ ಗುಣಲಕ್ಷಣಗಳೊಂದಿಗೆ ವರ್ಗವನ್ನು ವಿಸ್ತರಿಸುವ ಬದಲು ಕಂಟೇನರ್‌ಗೆ (ವರ್ಗದೊಳಗೆ) ವರ್ಗಕ್ಕೆ ಹೆಚ್ಚುವರಿ ಗುಣಲಕ್ಷಣಗಳನ್ನು ಸೇರಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ.
ಈವೆಂಟ್ ಮಾದರಿ(ಈವೆಂಟ್ ಚಾನಲ್) - ಈವೆಂಟ್‌ಗಳಿಗಾಗಿ ಕೇಂದ್ರೀಕೃತ ಚಾನಲ್ ರಚಿಸಲು ಪ್ರಕಟಿಸಿ/ಚಂದಾದಾರರ ಮಾದರಿಯನ್ನು ವಿಸ್ತರಿಸುತ್ತದೆ. ಚಂದಾದಾರರಾಗಲು ಪ್ರಾಕ್ಸಿ ಆಬ್ಜೆಕ್ಟ್ ಮತ್ತು ಚಾನಲ್‌ಗೆ ಈವೆಂಟ್ ಅನ್ನು ಪ್ರಕಟಿಸಲು ಪ್ರಾಕ್ಸಿ ಆಬ್ಜೆಕ್ಟ್ ಅನ್ನು ಬಳಸುತ್ತದೆ. ಪ್ರತಿನಿಧಿಯು ನಿಜವಾದ ಪ್ರಕಾಶಕರು ಅಥವಾ ಚಂದಾದಾರರಿಂದ ಪ್ರತ್ಯೇಕವಾಗಿ ಅಸ್ತಿತ್ವದಲ್ಲಿರುತ್ತಾರೆ. ಚಂದಾದಾರರು ಒಂದಕ್ಕಿಂತ ಹೆಚ್ಚು ಘಟಕಗಳಿಂದ ಪ್ರಕಟಿತ ಈವೆಂಟ್‌ಗಳನ್ನು ಸ್ವೀಕರಿಸಬಹುದು, ಅದು ಕೇವಲ ಒಂದು ಚಾನಲ್‌ನಲ್ಲಿ ನೋಂದಾಯಿಸಿದ್ದರೂ ಸಹ.

ಉತ್ಪಾದಕ ಮಾದರಿಗಳು

ಸೃಜನಾತ್ಮಕ ಮಾದರಿಗಳು ತತ್‌ಕ್ಷಣದ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಅಮೂರ್ತಗೊಳಿಸುವ ವಿನ್ಯಾಸ ಮಾದರಿಗಳಾಗಿವೆ. ವಸ್ತುಗಳನ್ನು ರಚಿಸುವ, ಸಂಯೋಜಿಸುವ ಮತ್ತು ಪ್ರಸ್ತುತಪಡಿಸುವ ವಿಧಾನದಿಂದ ಸ್ವತಂತ್ರ ವ್ಯವಸ್ಥೆಯನ್ನು ಮಾಡಲು ಅವು ಸಾಧ್ಯವಾಗಿಸುತ್ತವೆ. ತರಗತಿಗಳನ್ನು ತ್ವರಿತಗೊಳಿಸುವ ಟೆಂಪ್ಲೇಟ್ ತತ್‌ಕ್ಷಣದ ವರ್ಗವನ್ನು ಮಾರ್ಪಡಿಸಲು ಆನುವಂಶಿಕತೆಯನ್ನು ಬಳಸುತ್ತದೆ ಮತ್ತು ವಸ್ತುಗಳನ್ನು ತ್ವರಿತಗೊಳಿಸುವ ಟೆಂಪ್ಲೇಟ್ ತತ್‌ಕ್ಷಣವನ್ನು ಮತ್ತೊಂದು ವಸ್ತುವಿಗೆ ನಿಯೋಜಿಸುತ್ತದೆ.
ಅಮೂರ್ತ ಕಾರ್ಖಾನೆ(ಅಮೂರ್ತ ಕಾರ್ಖಾನೆ) - ಸಿಸ್ಟಮ್ ಘಟಕಗಳನ್ನು ರಚಿಸಲು ಇಂಟರ್ಫೇಸ್ ಅನ್ನು ಒದಗಿಸುವ ವರ್ಗ.
ಬಿಲ್ಡರ್(ಬಿಲ್ಡರ್) - ಸಂಕೀರ್ಣ ವಸ್ತುವನ್ನು ರಚಿಸಲು ಇಂಟರ್ಫೇಸ್ ಅನ್ನು ಒದಗಿಸುವ ವರ್ಗ.
ಫ್ಯಾಕ್ಟರಿ ವಿಧಾನ(ಫ್ಯಾಕ್ಟರಿ ವಿಧಾನ) - ಆಬ್ಜೆಕ್ಟ್ ಅನ್ನು ರಚಿಸಲು ಇಂಟರ್ಫೇಸ್ ಅನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುತ್ತದೆ, ಆದರೆ ಯಾವ ವರ್ಗವನ್ನು ತ್ವರಿತವಾಗಿ ಮಾಡಬೇಕೆಂದು ನಿರ್ಧರಿಸಲು ಅದನ್ನು ಉಪವರ್ಗಗಳಿಗೆ ಬಿಡುತ್ತದೆ.
ಸೋಮಾರಿಯಾದ ಆರಂಭ(ಲೇಜಿ ಇನಿಶಿಯಲೈಸೇಶನ್) - ಮೊದಲ ಕರೆ ಸಮಯದಲ್ಲಿ ಪ್ರಾರಂಭಿಸಲಾದ ವಸ್ತು.
ಸಿಂಗಲ್ಸ್ ಪೂಲ್(ಮಲ್ಟಿಟನ್) - ಒಂದು ವರ್ಗವು ಆಬ್ಜೆಕ್ಟ್ ನಿದರ್ಶನಗಳನ್ನು ಹೆಸರಿಸಿದೆ ಮತ್ತು ಅವುಗಳಿಗೆ ಜಾಗತಿಕ ಪ್ರವೇಶ ಬಿಂದುವನ್ನು ಒದಗಿಸುತ್ತದೆ ಎಂದು ಖಚಿತಪಡಿಸುತ್ತದೆ.
ಆಬ್ಜೆಕ್ಟ್ ಪೂಲ್(ಆಬ್ಜೆಕ್ಟ್ ಪೂಲ್) - ಪ್ರಾರಂಭಿಕ ಮತ್ತು ಬಳಸಲು ಸಿದ್ಧವಾಗಿರುವ ವಸ್ತುಗಳ ಗುಂಪಿನೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಲು ಇಂಟರ್ಫೇಸ್ ಅನ್ನು ಪ್ರತಿನಿಧಿಸುವ ವರ್ಗ.
ಮೂಲಮಾದರಿ(ಪ್ರೊಟೊಟೈಪ್) - ಕನ್ಸ್ಟ್ರಕ್ಟರ್ ಮೂಲಕ ರಚಿಸುವ ಬದಲು ಮತ್ತೊಂದು ವಸ್ತುವನ್ನು ಕ್ಲೋನಿಂಗ್ ಮಾಡುವ ಮೂಲಕ ವಸ್ತುವನ್ನು ರಚಿಸುವ ಇಂಟರ್ಫೇಸ್ ಅನ್ನು ವಿವರಿಸುತ್ತದೆ.
ಸಂಪನ್ಮೂಲವನ್ನು ಪಡೆಯುವುದು ಪ್ರಾರಂಭವಾಗಿದೆ(ಸಂಪನ್ಮೂಲ ಸ್ವಾಧೀನವು ಇನಿಶಿಯಲೈಸೇಶನ್ ಆಗಿದೆ (RAII)) - ಒಂದು ನಿರ್ದಿಷ್ಟ ಸಂಪನ್ಮೂಲವನ್ನು ಸ್ವಾಧೀನಪಡಿಸಿಕೊಳ್ಳುವುದು ಪ್ರಾರಂಭದೊಂದಿಗೆ ಸಂಯೋಜಿಸಲ್ಪಡುತ್ತದೆ ಮತ್ತು ಅದನ್ನು ಬಿಡುಗಡೆ ಮಾಡುವುದು ವಸ್ತುವಿನ ನಾಶದೊಂದಿಗೆ ಸಂಯೋಜಿಸಲ್ಪಡುತ್ತದೆ.
ಒಂಟಿ(ಸಿಂಗಲ್ಟನ್) - ಕೇವಲ ಒಂದು ನಿದರ್ಶನವನ್ನು ಹೊಂದಿರುವ ವರ್ಗ.

ರಚನಾತ್ಮಕ ಮಾದರಿಗಳು

ರಚನಾತ್ಮಕ ಮಾದರಿಗಳು ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ವಸ್ತುಗಳ ಇಂಟರ್ಫೇಸ್ ಅಥವಾ ಅದರ ಅನುಷ್ಠಾನವನ್ನು ಮಾರ್ಪಡಿಸುವ ವಿವಿಧ ಸಂಕೀರ್ಣ ರಚನೆಗಳನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುತ್ತದೆ, ಇದು ಪ್ರೋಗ್ರಾಂ ಅನ್ನು ಅಭಿವೃದ್ಧಿಪಡಿಸಲು ಮತ್ತು ಅತ್ಯುತ್ತಮವಾಗಿಸಲು ಸುಲಭಗೊಳಿಸುತ್ತದೆ.
ಅಡಾಪ್ಟರ್(ಅಡಾಪ್ಟರ್ / ರ್ಯಾಪರ್) - ಎರಡು ಇತರ ವಸ್ತುಗಳ ನಡುವೆ ಪರಸ್ಪರ ಕ್ರಿಯೆಯನ್ನು ಒದಗಿಸುವ ವಸ್ತು, ಅವುಗಳಲ್ಲಿ ಒಂದು ಬಳಸುತ್ತದೆ, ಮತ್ತು ಇನ್ನೊಂದು ಇಂಟರ್ಫೇಸ್ ಅನ್ನು ಮೊದಲನೆಯದಕ್ಕೆ ಹೊಂದಿಕೆಯಾಗುವುದಿಲ್ಲ.
ಸೇತುವೆ(ಸೇತುವೆ) - ಪ್ರವೇಶ ಇಂಟರ್ಫೇಸ್ ಮತ್ತು ವರ್ಗ ಅನುಷ್ಠಾನ ಇಂಟರ್ಫೇಸ್ ಅನ್ನು ಸ್ವತಂತ್ರವಾಗಿ ಬದಲಾಯಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸುವ ರಚನೆ.
ಲಿಂಕರ್(ಸಂಯೋಜಿತ) - ತನ್ನಂತೆಯೇ ಇರುವ ವಸ್ತುಗಳನ್ನು ಸಂಯೋಜಿಸುವ ವಸ್ತು.
ಅಲಂಕಾರಕಾರಅಥವಾ ಹೊದಿಕೆ(ಡೆಕೋರೇಟರ್) ಅಥವಾ (ಹೊದಿಕೆ) - ಆನುವಂಶಿಕತೆಯನ್ನು ಬಳಸದೆ ಮತ್ತೊಂದು ವರ್ಗದ ಕಾರ್ಯವನ್ನು ವಿಸ್ತರಿಸುವ ವರ್ಗ.
ಮುಂಭಾಗ(ಮುಂಭಾಗ) - ಹಲವಾರು ವರ್ಗಗಳೊಂದಿಗೆ ಕೆಲಸವನ್ನು ಅಮೂರ್ತಗೊಳಿಸುವ ಒಂದು ವಸ್ತು, ಅವುಗಳನ್ನು ಒಂದೇ ಒಟ್ಟಾರೆಯಾಗಿ ಸಂಯೋಜಿಸುತ್ತದೆ.
ಪ್ರವೇಶದ ಏಕ ಬಿಂದು(ಮುಂಭಾಗದ ನಿಯಂತ್ರಕ) - ಉಪವ್ಯವಸ್ಥೆಯಲ್ಲಿ ಇಂಟರ್ಫೇಸ್‌ಗಳಿಗೆ ಏಕೀಕೃತ ಇಂಟರ್ಫೇಸ್ ಅನ್ನು ಒದಗಿಸುತ್ತದೆ. ಮುಂಭಾಗದ ನಿಯಂತ್ರಕವು ಉನ್ನತ ಮಟ್ಟದ ಇಂಟರ್ಫೇಸ್ ಅನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುತ್ತದೆ ಅದು ಉಪವ್ಯವಸ್ಥೆಯನ್ನು ಬಳಸಲು ಸುಲಭವಾಗುತ್ತದೆ.
ಅವಕಾಶವಾದಿ(ಫ್ಲೈವೈಟ್) - ಇದು ಪ್ರೋಗ್ರಾಂನಲ್ಲಿನ ವಿವಿಧ ಸ್ಥಳಗಳಲ್ಲಿ ವಿಶಿಷ್ಟವಾದ ಉದಾಹರಣೆಯಾಗಿ ಪ್ರಸ್ತುತಪಡಿಸುವ ವಸ್ತುವಾಗಿದೆ, ಆದರೆ ವಾಸ್ತವವಾಗಿ ಒಂದಲ್ಲ.
ಉಪ(ಪ್ರಾಕ್ಸಿ) - ಎರಡು ಇತರ ವಸ್ತುಗಳ ನಡುವೆ ಮಧ್ಯವರ್ತಿಯಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುವ ವಸ್ತು, ಮತ್ತು ಅದರ ಮೂಲಕ ಪ್ರವೇಶಿಸಿದ ವಸ್ತುವಿನ ಪ್ರವೇಶವನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುತ್ತದೆ/ನಿರ್ಬಂಧಿಸುತ್ತದೆ.

ವರ್ತನೆಯ ಮಾದರಿಗಳು

ವರ್ತನೆಯ ಮಾದರಿಗಳು ವಸ್ತುಗಳ ನಡುವಿನ ಪರಸ್ಪರ ಕ್ರಿಯೆಯನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುತ್ತವೆ, ಹೀಗಾಗಿ ಅದರ ನಮ್ಯತೆಯನ್ನು ಹೆಚ್ಚಿಸುತ್ತದೆ.
ಜವಾಬ್ದಾರಿಯ ಸರಪಳಿ(ಜವಾಬ್ದಾರಿಯ ಸರಪಳಿ) - ಜವಾಬ್ದಾರಿಯ ಮಟ್ಟಗಳ ವ್ಯವಸ್ಥೆಯಲ್ಲಿ ಸಂಘಟಿಸಲು ವಿನ್ಯಾಸಗೊಳಿಸಲಾಗಿದೆ.
ತಂಡ(ಕಮಾಂಡ್) - ಕ್ರಿಯೆಯನ್ನು ಪ್ರತಿನಿಧಿಸುತ್ತದೆ. ಕಮಾಂಡ್ ಆಬ್ಜೆಕ್ಟ್ ಕ್ರಿಯೆಯನ್ನು ಮತ್ತು ಅದರ ನಿಯತಾಂಕಗಳನ್ನು ಒಳಗೊಂಡಿದೆ.
ಇಂಟರ್ಪ್ರಿಟರ್(ವ್ಯಾಖ್ಯಾನಕಾರ) - ಆಗಾಗ್ಗೆ ಸಂಭವಿಸುವ ಸಮಸ್ಯೆಯನ್ನು ಪರಿಹರಿಸಿ, ಆದರೆ ಬದಲಾವಣೆಗೆ ಒಳಪಟ್ಟಿರುತ್ತದೆ.
ಪುನರಾವರ್ತಕ(Iterator) - ಒಟ್ಟುಗೂಡಿಸುವಿಕೆಯ ಭಾಗವಾಗಿರುವ ಪ್ರತಿಯೊಂದು ವಸ್ತುಗಳ ವಿವರಣೆಯನ್ನು ಬಳಸದೆಯೇ ಒಟ್ಟು ವಸ್ತುವಿನ ಅಂಶಗಳಿಗೆ ಅನುಕ್ರಮ ಪ್ರವೇಶವನ್ನು ಪಡೆಯಲು ನಿಮಗೆ ಅನುಮತಿಸುವ ವಸ್ತುವನ್ನು ಪ್ರತಿನಿಧಿಸುತ್ತದೆ.
ಮಧ್ಯವರ್ತಿ(ಮಧ್ಯವರ್ತಿ) - ಅನೇಕ ವಸ್ತುಗಳ ನಡುವೆ ಪರಸ್ಪರ ಕ್ರಿಯೆಯನ್ನು ಒದಗಿಸುತ್ತದೆ, ಸಡಿಲವಾದ ಜೋಡಣೆಯನ್ನು ರೂಪಿಸುತ್ತದೆ ಮತ್ತು ವಸ್ತುಗಳು ಪರಸ್ಪರ ಸ್ಪಷ್ಟವಾಗಿ ಉಲ್ಲೇಖಿಸುವ ಅಗತ್ಯವನ್ನು ನಿವಾರಿಸುತ್ತದೆ.
ಕಾಯುವವ(ಮೆಮೆಂಟೋ) - ಎನ್‌ಕ್ಯಾಪ್ಸುಲೇಶನ್ ಅನ್ನು ಮುರಿಯದೆಯೇ ವಸ್ತುವಿನ ಆಂತರಿಕ ಸ್ಥಿತಿಗಳನ್ನು ಸೆರೆಹಿಡಿಯಲು ಮತ್ತು ಉಳಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ ಇದರಿಂದ ನೀವು ನಂತರ ಈ ಸ್ಥಿತಿಗಳಲ್ಲಿ ಅದನ್ನು ಮರುಸ್ಥಾಪಿಸಬಹುದು.
ಶೂನ್ಯ ವಸ್ತು(ಶೂನ್ಯ ವಸ್ತು) - "ಡೀಫಾಲ್ಟ್" ವಸ್ತುವನ್ನು ಒದಗಿಸುವ ಮೂಲಕ ಶೂನ್ಯ ಪಾಯಿಂಟರ್‌ಗಳನ್ನು ತಡೆಯುತ್ತದೆ.
ವೀಕ್ಷಕ(ವೀಕ್ಷಕ) - ವಸ್ತುಗಳ ನಡುವೆ ಒಂದರಿಂದ ಹಲವು ಅವಲಂಬನೆಯನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುತ್ತದೆ ಇದರಿಂದ ಒಂದು ವಸ್ತುವಿನ ಸ್ಥಿತಿಯು ಬದಲಾದಾಗ, ಅದರ ಮೇಲೆ ಅವಲಂಬಿತರಾದ ಎಲ್ಲರಿಗೂ ಈ ಘಟನೆಯ ಕುರಿತು ತಿಳಿಸಲಾಗುತ್ತದೆ.
ಸೇವಕ(ಸೇವಕ) - ವರ್ಗಗಳ ಗುಂಪಿಗೆ ಸಾಮಾನ್ಯ ಕಾರ್ಯವನ್ನು ಒದಗಿಸಲು ಬಳಸಲಾಗುತ್ತದೆ.
ನಿರ್ದಿಷ್ಟತೆ(ವಿಶೇಷಣ) - ವ್ಯಾಪಾರ ತರ್ಕವನ್ನು ಲಿಂಕ್ ಮಾಡಲು ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ.
ರಾಜ್ಯ(ರಾಜ್ಯ) - ಪ್ರೋಗ್ರಾಂ ಎಕ್ಸಿಕ್ಯೂಶನ್ ಸಮಯದಲ್ಲಿ, ವಸ್ತುವು ಅದರ ಸ್ಥಿತಿಯನ್ನು ಅವಲಂಬಿಸಿ ಅದರ ನಡವಳಿಕೆಯನ್ನು ಬದಲಾಯಿಸಬೇಕಾದ ಸಂದರ್ಭಗಳಲ್ಲಿ ಬಳಸಲಾಗುತ್ತದೆ.
ತಂತ್ರ(ತಂತ್ರ) - ಅಲ್ಗಾರಿದಮ್‌ಗಳ ಕುಟುಂಬವನ್ನು ವ್ಯಾಖ್ಯಾನಿಸಲು, ಅವುಗಳಲ್ಲಿ ಪ್ರತಿಯೊಂದನ್ನು ಸುತ್ತುವರಿಯಲು ಮತ್ತು ಅವುಗಳ ಪರಸ್ಪರ ವಿನಿಮಯವನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಲು ವಿನ್ಯಾಸಗೊಳಿಸಲಾಗಿದೆ.
ಟೆಂಪ್ಲೇಟ್ ವಿಧಾನ(ಟೆಂಪ್ಲೇಟ್ ವಿಧಾನ) - ಅಲ್ಗಾರಿದಮ್‌ನ ಆಧಾರವನ್ನು ವಿವರಿಸುತ್ತದೆ ಮತ್ತು ವಂಶಸ್ಥರು ಅದರ ರಚನೆಯನ್ನು ಒಟ್ಟಾರೆಯಾಗಿ ಬದಲಾಯಿಸದೆ ಅಲ್ಗಾರಿದಮ್‌ನ ಕೆಲವು ಹಂತಗಳನ್ನು ಮರು ವ್ಯಾಖ್ಯಾನಿಸಲು ಅನುಮತಿಸುತ್ತದೆ.
ಸಂದರ್ಶಕ(ಸಂದರ್ಶಕ) - ಇತರ ವರ್ಗಗಳ ವಸ್ತುಗಳ ಮೇಲೆ ನಡೆಸಲಾಗುವ ಕಾರ್ಯಾಚರಣೆಯನ್ನು ವಿವರಿಸುತ್ತದೆ. ನೀವು ಸಂದರ್ಶಕರ ವರ್ಗವನ್ನು ಬದಲಾಯಿಸಿದಾಗ, ಸೇವೆ ಸಲ್ಲಿಸಿದ ತರಗತಿಗಳನ್ನು ಬದಲಾಯಿಸುವ ಅಗತ್ಯವಿಲ್ಲ.
ಸರಳ ನೀತಿ- ಅಂತಹ ಮಾದರಿಯು ಅಸ್ತಿತ್ವದಲ್ಲಿದೆ ಎಂದು ನನಗೆ ತಿಳಿದಿದೆ, ಆದರೆ ಅದರ ಅರ್ಥವನ್ನು ನಾನು ಇನ್ನೂ ಕಂಡುಕೊಂಡಿಲ್ಲ. ನೀವು ಯಾವುದೇ ಮಾಹಿತಿಯನ್ನು ಹೊಂದಿದ್ದರೆ, ಅದನ್ನು ಕಾಮೆಂಟ್‌ಗಳಲ್ಲಿ ಪೋಸ್ಟ್ ಮಾಡಿ.
ಕೇಳುಗ(ಈವೆಂಟ್ ಕೇಳುಗ) - ಇದೇ
ಒಂದು ಬಾರಿ ಸಂದರ್ಶಕ(ಏಕ-ಸೇವೆಯ ಸಂದರ್ಶಕ) - ಸಂದರ್ಶಕರ ಮಾದರಿಯ ಅನುಷ್ಠಾನವನ್ನು ಆಪ್ಟಿಮೈಸ್ ಮಾಡುತ್ತದೆ, ಅದನ್ನು ಪ್ರಾರಂಭಿಸಲಾಗುತ್ತದೆ, ಒಮ್ಮೆ ಬಳಸಲಾಗುತ್ತದೆ ಮತ್ತು ನಂತರ ಅಳಿಸಲಾಗುತ್ತದೆ.
ಶ್ರೇಣೀಕೃತ ಸಂದರ್ಶಕ(ಹೈರಾರ್ಕಿಕಲ್ ವಿಸಿಟರ್) - ಕ್ರಮಾನುಗತ ಡೇಟಾ ರಚನೆಯ ಎಲ್ಲಾ ಶೃಂಗಗಳನ್ನು ದಾಟಲು ಒಂದು ಮಾರ್ಗವನ್ನು ಒದಗಿಸುತ್ತದೆ (ಉದಾಹರಣೆಗೆ, ಮರ).

ಸಮಾನಾಂತರ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಮಾದರಿಗಳು

ಬಹು-ಥ್ರೆಡ್ ಪ್ರೋಗ್ರಾಂಗಳನ್ನು ಹೆಚ್ಚು ಪರಿಣಾಮಕಾರಿಯಾಗಿ ಬರೆಯಲು ಬಳಸಲಾಗುತ್ತದೆ ಮತ್ತು ಸಿಂಕ್ರೊನೈಸೇಶನ್ ಸಮಸ್ಯೆಗಳಿಗೆ ಸಿದ್ಧ ಪರಿಹಾರಗಳನ್ನು ಒದಗಿಸುತ್ತದೆ.
ಸಕ್ರಿಯ ವಸ್ತು(ಸಕ್ರಿಯ ವಸ್ತು) - ಒಂದು ವಿಧಾನದ ಮರಣದಂಡನೆಯ ಥ್ರೆಡ್ ಅನ್ನು ಅದನ್ನು ಕರೆಯಲಾದ ಥ್ರೆಡ್ನಿಂದ ಪ್ರತ್ಯೇಕಿಸಲು ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ. ಅಸಮಕಾಲಿಕ ವಿಧಾನದ ಕರೆ ಮತ್ತು ಶೆಡ್ಯೂಲರ್ ಮಾದರಿಗಳನ್ನು ಬಳಸುತ್ತದೆ.
ಡಾಡ್ಜರ್(ಬಾಲ್ಕಿಂಗ್) - ವಸ್ತುವು ಸರಿಯಾದ ಸ್ಥಿತಿಯಲ್ಲಿದ್ದಾಗ ಮಾತ್ರ ಅದರ ಮೇಲೆ ಕ್ರಿಯೆಯನ್ನು ಮಾಡಲು ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ.
ಆಸ್ತಿ ಬೈಂಡಿಂಗ್(ಬೈಂಡಿಂಗ್ ಗುಣಲಕ್ಷಣಗಳು) - ವಿವಿಧ ವಸ್ತುಗಳಾದ್ಯಂತ ಗುಣಲಕ್ಷಣಗಳ ಸಿಂಕ್ರೊನೈಸೇಶನ್ ಅನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಲು ಬಹು ವೀಕ್ಷಕರನ್ನು ಸಂಯೋಜಿಸುತ್ತದೆ
ಸಂದೇಶ ವಿನಿಮಯ(ಮೆಸೇಜಿಂಗ್ ವಿನ್ಯಾಸ ಮಾದರಿ (MDP)) - ಮಾಹಿತಿಯನ್ನು (ಸಂದೇಶಗಳು) ವಿನಿಮಯ ಮಾಡಲು ಘಟಕಗಳು ಮತ್ತು ಅಪ್ಲಿಕೇಶನ್‌ಗಳನ್ನು ಅನುಮತಿಸುತ್ತದೆ.
ಲಾಕ್ ಅನ್ನು ಎರಡು ಬಾರಿ ಪರಿಶೀಲಿಸಿ(ಎರಡು ಬಾರಿ ಪರಿಶೀಲಿಸಿದ ಲಾಕಿಂಗ್) - ಲಾಕ್ ಅನ್ನು ಪಡೆದುಕೊಳ್ಳುವುದರೊಂದಿಗೆ ಸಂಬಂಧಿಸಿದ ಓವರ್ಹೆಡ್ ಅನ್ನು ಕಡಿಮೆ ಮಾಡಲು ವಿನ್ಯಾಸಗೊಳಿಸಲಾಗಿದೆ.
ಅಸಮಕಾಲಿಕ ಘಟನೆಗಳು(ಈವೆಂಟ್-ಆಧಾರಿತ ಅಸಮಕಾಲಿಕ) - ಬಹು ಥ್ರೆಡ್‌ಗಳೊಂದಿಗೆ ಪ್ರೋಗ್ರಾಂಗಳಲ್ಲಿ ಉದ್ಭವಿಸುವ ಅಸಮಕಾಲಿಕ ಮಾದರಿಯ ಸಮಸ್ಯೆಗಳನ್ನು ಪರಿಹರಿಸಿ.
ಸಂರಕ್ಷಿತ ಅಮಾನತು(ಗಾರ್ಡ್ಡ್ ಅಮಾನತು) - ವಸ್ತುವಿನ ಮೇಲಿನ ಕ್ರಿಯೆಯ ಕಾರ್ಯಗತಗೊಳಿಸುವಿಕೆಯನ್ನು ಅದು ಸರಿಯಾದ ಸ್ಥಿತಿಯಲ್ಲಿದ್ದಾಗ ಮಾತ್ರ ನಿರ್ಬಂಧಿಸಲು ಬಳಸಲಾಗುತ್ತದೆ.
ಅರ್ಧ-ಸಿಂಕ್(ಅರ್ಧ-ಸಿಂಕ್/ಹಾಫ್-ಅಸಿಂಕ್) - ಈ ಮಾದರಿಯ ಕುರಿತು ಇನ್ನೂ ಯಾವುದೇ ಡೇಟಾ ಇಲ್ಲ.
ನಾಯಕರು(ನಾಯಕರು/ಅನುಯಾಯಿಗಳು) - ಈ ಮಾದರಿಯ ಬಗ್ಗೆ ಇನ್ನೂ ಯಾವುದೇ ಡೇಟಾ ಇಲ್ಲ.
ಲಾಕ್ ಮಾಡಿ(ಲಾಕ್) - ಇತರ ಥ್ರೆಡ್‌ಗಳನ್ನು ಪ್ರವೇಶಿಸುವುದನ್ನು ಅಥವಾ ಬದಲಾಯಿಸುವುದನ್ನು ತಡೆಯಲು ಒಂದು ಥ್ರೆಡ್ ಸಂಪನ್ಮೂಲವನ್ನು ಲಾಕ್ ಮಾಡುತ್ತದೆ.
ಮಾನಿಟರ್(ಮಾನಿಟರ್ ಆಬ್ಜೆಕ್ಟ್) - ಒಂದಕ್ಕಿಂತ ಹೆಚ್ಚು ಥ್ರೆಡ್‌ಗಳಿಂದ ಸುರಕ್ಷಿತವಾಗಿ ಬಳಸಲು ಉದ್ದೇಶಿಸಲಾದ ವಸ್ತು.
ರಿಯಾಕ್ಟರ್ - ಒಂದು ಅಥವಾ ಹೆಚ್ಚಿನ ಮೂಲಗಳಿಂದ ಸೇವೆಗೆ ವಿನಂತಿಗಳ ಸಿಂಕ್ರೊನಸ್ ಪ್ರಸರಣಕ್ಕಾಗಿ ವಿನ್ಯಾಸಗೊಳಿಸಲಾಗಿದೆ.
ಓದಲು-ಬರೆಯಲು ಲಾಕಿಂಗ್(ರೀಡ್ ರೈಟ್ ಲಾಕ್) - ಹಂಚಿದ ಸಂಗ್ರಹಣೆಯಿಂದ ಮಾಹಿತಿಯನ್ನು ಏಕಕಾಲದಲ್ಲಿ ಓದಲು ಬಹು ಥ್ರೆಡ್‌ಗಳನ್ನು ಅನುಮತಿಸುತ್ತದೆ, ಆದರೆ ಒಂದು ಸಮಯದಲ್ಲಿ ಅದನ್ನು ಬದಲಾಯಿಸಲು ಕೇವಲ ಒಂದು ಥ್ರೆಡ್ ಅನ್ನು ಅನುಮತಿಸುತ್ತದೆ.
ಶೆಡ್ಯೂಲರ್(ಶೆಡ್ಯೂಲರ್) - ಯಾವುದೇ ನಿರ್ದಿಷ್ಟ ನೀತಿಯ ಮೇಲೆ ಅವಲಂಬಿತವಾಗದೆ ವೇಳಾಪಟ್ಟಿ ನೀತಿಗಳನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಲು ಕಾರ್ಯವಿಧಾನವನ್ನು ಒದಗಿಸುತ್ತದೆ.
ಥ್ರೆಡ್ ಪೂಲ್(ಥ್ರೆಡ್ ಪೂಲ್) - ಸಂಸ್ಕರಣೆ ಕೆಲಸಗಳಿಗಾಗಿ ಥ್ರೆಡ್‌ಗಳ ಪೂಲ್ ಅನ್ನು ಒದಗಿಸುತ್ತದೆ, ಸಾಮಾನ್ಯವಾಗಿ ಕ್ಯೂ ರೂಪದಲ್ಲಿ ಪ್ರಸ್ತುತಪಡಿಸಲಾಗುತ್ತದೆ.
ವಿಶೇಷ ಸ್ಟ್ರೀಮ್ ಸಂಗ್ರಹಣೆ(ಥ್ರೆಡ್-ನಿರ್ದಿಷ್ಟ ಸಂಗ್ರಹಣೆ) - ವಿಭಿನ್ನ ಥ್ರೆಡ್‌ಗಳಿಗೆ ವಿಭಿನ್ನ ಜಾಗತಿಕ ಅಸ್ಥಿರಗಳನ್ನು ಒದಗಿಸಲು ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ.
ಸಿಂಗಲ್ ಥ್ರೆಡ್ ಎಕ್ಸಿಕ್ಯೂಶನ್(ಸಿಂಗಲ್ ಥ್ರೆಡ್ ಎಕ್ಸಿಕ್ಯೂಶನ್) - ಏಕಕಾಲೀನ ವಿಧಾನದ ಆವಾಹನೆಯನ್ನು ತಡೆಯುತ್ತದೆ, ಇದರಿಂದಾಗಿ ಈ ವಿಧಾನದ ಸಮಾನಾಂತರ ಕಾರ್ಯಗತಗೊಳಿಸುವಿಕೆಯನ್ನು ನಿಷೇಧಿಸುತ್ತದೆ.
ಸಹಕಾರ ಮಾದರಿ(ಸಹಕಾರಿ ಮಾದರಿ) - ಥ್ರೆಡ್‌ಗಳ ಮುಕ್ತಾಯವನ್ನು ಸೂಚಿಸಲು ಸಾಮಾನ್ಯ ಧ್ವಜವನ್ನು ಬಳಸಿಕೊಂಡು, ಮರಣದಂಡನೆಯ ಎಳೆಗಳನ್ನು ಸುರಕ್ಷಿತವಾಗಿ ನಿಲ್ಲಿಸಲು ಯಾಂತ್ರಿಕ ವ್ಯವಸ್ಥೆಯನ್ನು ಒದಗಿಸುತ್ತದೆ.

ಸಿಸ್ಟಮ್ ಆರ್ಕಿಟೆಕ್ಚರ್ ಪ್ಯಾಟರ್ನ್ಸ್

ಮಾದರಿ-ವೀಕ್ಷಣೆ-ನಿಯಂತ್ರಕ(MVC) - ಮಾದರಿ-ವೀಕ್ಷಣೆ-ನಿಯಂತ್ರಕ.
ಮಾದರಿ-ವೀಕ್ಷಣೆ-ಪ್ರೆಸೆಂಟರ್
ಮಾದರಿ-ವೀಕ್ಷಣೆ-ವೀಕ್ಷಣೆ ಮಾದರಿ
ಪ್ರಸ್ತುತಿ-ಅಮೂರ್ತತೆ-ನಿಯಂತ್ರಣ
ಬೆತ್ತಲೆ ವಸ್ತುಗಳು
ಕ್ರಮಾನುಗತ ಮಾದರಿ–ವೀಕ್ಷಣೆ–ನಿಯಂತ್ರಕ

ಎಂಟರ್‌ಪ್ರೈಸ್ ಟೆಂಪ್ಲೇಟ್‌ಗಳು

ಆಕ್ಟಿವ್ ರೆಕಾರ್ಡ್ ಎನ್ನುವುದು ವಸ್ತು-ಆಧಾರಿತ ಪ್ರೋಗ್ರಾಮಿಂಗ್‌ನಲ್ಲಿ ಸಂಬಂಧಿತ ಡೇಟಾಬೇಸ್ ಡೇಟಾವನ್ನು ಪ್ರವೇಶಿಸುವ ಒಂದು ಮಾರ್ಗವಾಗಿದೆ.
ವ್ಯಾಪಾರ ಪ್ರತಿನಿಧಿ
ಸಂಯೋಜಿತ ಘಟಕ
ಸಂಯೋಜಿತ ನೋಟ
DAO (ಡೇಟಾ ಆಕ್ಸೆಸ್ ಆಬ್ಜೆಕ್ಟ್)
ರವಾನೆದಾರರ ನೋಟ
ಮುಂಭಾಗದ ನಿಯಂತ್ರಕ
ಫಿಲ್ಟರ್ ಅನ್ನು ತಡೆಹಿಡಿಯಲಾಗುತ್ತಿದೆ
ರಿಜಿಸ್ಟ್ರಿ
ಸೇವಾ ಆಕ್ಟಿವೇಟರ್
ಸೇವಾ ಲೊಕೇಟರ್
ಕೆಲಸಗಾರನಿಗೆ ಸೇವೆ
ಸೆಷನ್ ಮುಂಭಾಗ / ಸೆಷನ್ ಮುಂಭಾಗ
ಆಬ್ಜೆಕ್ಟ್ ಅಸೆಂಬ್ಲರ್ ಅನ್ನು ವರ್ಗಾಯಿಸಿ
ವಸ್ತುವನ್ನು ವರ್ಗಾಯಿಸಿ
ಮೌಲ್ಯ ಪಟ್ಟಿ ನಿರ್ವಾಹಕ
ಸಹಾಯಕ ವೀಕ್ಷಿಸಿ
ಕೆಲಸದ ಘಟಕ

ಇತರ ರೀತಿಯ ಟೆಂಪ್ಲೇಟ್‌ಗಳು

ಇಂದು ಹಲವಾರು ಇತರ ಟೆಂಪ್ಲೇಟ್‌ಗಳು ಲಭ್ಯವಿದೆ.
ಸಂಗ್ರಹಣೆ(ಭಂಡಾರ)
ಕ್ಯಾರಿಯರ್ ರೈಡರ್ ಮ್ಯಾಪರ್ಸಂಗ್ರಹಿಸಿದ ಮಾಹಿತಿಗೆ ಪ್ರವೇಶವನ್ನು ಒದಗಿಸುವುದನ್ನು ವಿವರಿಸಿ.
ವಿಶ್ಲೇಷಣಾತ್ಮಕ ಟೆಂಪ್ಲೇಟ್‌ಗಳುಸಾಫ್ಟ್‌ವೇರ್ ಅಭಿವೃದ್ಧಿ ಪ್ರಕ್ರಿಯೆಯು ಪ್ರಾರಂಭವಾಗುವ ಮೊದಲು ಸಾಫ್ಟ್‌ವೇರ್ ಅವಶ್ಯಕತೆಗಳನ್ನು (ಅವಶ್ಯಕತೆಗಳ ವಿಶ್ಲೇಷಣೆ) ಅಭಿವೃದ್ಧಿಪಡಿಸುವ ಮೂಲ ವಿಧಾನವನ್ನು ವಿವರಿಸಿ
ಸಂವಹನ ಮಾದರಿಗಳುವೈಯಕ್ತಿಕ ಭಾಗವಹಿಸುವವರು/ಸಂಸ್ಥೆಯ ಉದ್ಯೋಗಿಗಳ ನಡುವಿನ ಸಂವಹನ ಪ್ರಕ್ರಿಯೆಯನ್ನು ವಿವರಿಸಿ
ಸಾಂಸ್ಥಿಕ ಟೆಂಪ್ಲೇಟ್‌ಗಳುಉದ್ಯಮ/ಸಂಸ್ಥೆಯ ಸಾಂಸ್ಥಿಕ ಕ್ರಮಾನುಗತವನ್ನು ವಿವರಿಸಿ
ಆಂಟಿಪ್ಯಾಟರ್ನ್ಸ್(ವಿರೋಧಿ ವಿನ್ಯಾಸ-ಮಾದರಿಗಳು) ಕಾರ್ಯಕ್ರಮಗಳನ್ನು ಅಭಿವೃದ್ಧಿಪಡಿಸುವಾಗ ಏನು ಮಾಡಬಾರದು ಎಂಬುದನ್ನು ವಿವರಿಸುತ್ತದೆ, ವಿನ್ಯಾಸ ಮತ್ತು ಅನುಷ್ಠಾನದಲ್ಲಿ ವಿಶಿಷ್ಟ ದೋಷಗಳನ್ನು ತೋರಿಸುತ್ತದೆ

ವಿನ್ಯಾಸ ಮಾದರಿಗಳು ಯಾವುವು? ಸಾಮಾನ್ಯ ವಿನ್ಯಾಸ ಸಮಸ್ಯೆಗಳನ್ನು ಪರಿಹರಿಸಲು ಪ್ರೋಗ್ರಾಂ ಕೋಡ್ ಅನ್ನು ನಿರ್ಮಿಸುವ ನಿರ್ದಿಷ್ಟ ವಿಧಾನವನ್ನು ಮಾದರಿಯು ಪ್ರತಿನಿಧಿಸುತ್ತದೆ. IN ಈ ವಿಷಯದಲ್ಲಿಆಗಾಗ್ಗೆ ಸಂಭವಿಸುವ ಸಾಮಾನ್ಯ ಔಪಚಾರಿಕ ಸಮಸ್ಯೆಗಳ ಒಂದು ಸೆಟ್ ಇದೆ ಎಂದು ಅದು ಊಹಿಸುತ್ತದೆ ಮತ್ತು ಈ ಸಮಸ್ಯೆಗಳನ್ನು ಪರಿಹರಿಸಲು ಮಾದರಿಗಳು ತತ್ವಗಳ ಗುಂಪನ್ನು ಒದಗಿಸುತ್ತದೆ.

ವಿನ್ಯಾಸ ಕ್ಷೇತ್ರದಲ್ಲಿ ಸಾಮಾನ್ಯ ಸಮಸ್ಯೆಗಳಿಗೆ ಪರಿಹಾರಗಳನ್ನು ವಿವರಿಸುವ ಮಾರ್ಗವಾಗಿ ಮಾದರಿಗಳ ಕಲ್ಪನೆಯು ಬಹಳ ಹಿಂದೆಯೇ ಕಾಣಿಸಿಕೊಂಡಿದ್ದರೂ, ನಾಲ್ಕು ಲೇಖಕರಾದ ಎರಿಚ್ ಗಾಮಾ, ರಿಚರ್ಡ್ ಹೆಲ್ಮ್, ರಾಲ್ಫ್ ಜಾನ್ಸನ್ ಅವರ ಪ್ರಸಿದ್ಧ ಕೃತಿಗಳಿಗೆ ಅವರ ಜನಪ್ರಿಯತೆಯು ಹೆಚ್ಚಾಗಿ ಬೆಳೆಯಲು ಪ್ರಾರಂಭಿಸಿತು. , ಜಾನ್ ವ್ಲಿಸ್ಸೈಡ್ಸ್, ಇದನ್ನು "ವಿನ್ಯಾಸ ಮಾದರಿಗಳು: ಮರುಬಳಕೆ ಮಾಡಬಹುದಾದ ವಸ್ತು-ಓರಿಯೆಂಟೆಡ್ ಸಾಫ್ಟ್‌ವೇರ್ ಅಂಶಗಳು" (ರಷ್ಯನ್ ಭಾಷೆಯಲ್ಲಿ "ವಸ್ತು-ಆಧಾರಿತ ವಿನ್ಯಾಸ ತಂತ್ರಗಳು. ವಿನ್ಯಾಸ ಮಾದರಿಗಳು" ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ) ಮತ್ತು ಇದನ್ನು 1994 ರಲ್ಲಿ ಪ್ರಕಟಿಸಲಾಯಿತು. ಮತ್ತು ಲೇಖಕರ ತಂಡವನ್ನು ಸಾಮಾನ್ಯವಾಗಿ "ಗ್ಯಾಂಗ್ ಆಫ್ ಫೋರ್" ಅಥವಾ ಗ್ಯಾಂಗ್ ಆಫ್ ಫೋರ್ ಅಥವಾ ಸಂಕ್ಷಿಪ್ತವಾಗಿ GoF ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ. ಈ ಪುಸ್ತಕವು ಮೂಲಭೂತವಾಗಿ ಪ್ರೋಗ್ರಾಂ ವಿನ್ಯಾಸದ ಸಾಮಾನ್ಯ ವಿಧಾನಗಳನ್ನು ವಿವರಿಸುವ ಮೊದಲ ದೊಡ್ಡ-ಪ್ರಮಾಣದ ಪ್ರಯತ್ನವಾಗಿದೆ. ಮತ್ತು ಕಾಲಾನಂತರದಲ್ಲಿ, ಮಾದರಿಗಳ ಬಳಕೆಯನ್ನು ಉತ್ತಮ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಅಭ್ಯಾಸವೆಂದು ಪರಿಗಣಿಸಲಾಯಿತು.

ಮಾದರಿಗಳ ಬಳಕೆಯು ನಮಗೆ ಏನು ನೀಡುತ್ತದೆ? ಕಾರ್ಯಕ್ರಮಗಳನ್ನು ಬರೆಯುವಾಗ, ತರಗತಿಗಳು ಮತ್ತು ವಸ್ತುಗಳ ರೂಪದಲ್ಲಿ ಮತ್ತು ಅವುಗಳ ನಡುವಿನ ಸಂಬಂಧಗಳ ರೂಪದಲ್ಲಿ ನಾವು ಸಮಸ್ಯೆಯನ್ನು ಔಪಚಾರಿಕಗೊಳಿಸಬಹುದು. ಮತ್ತು ಅದನ್ನು ಪರಿಹರಿಸಲು ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಮಾದರಿಗಳಲ್ಲಿ ಒಂದನ್ನು ಅನ್ವಯಿಸಿ. ಪರಿಣಾಮವಾಗಿ, ನಾವು ಏನನ್ನೂ ಆವಿಷ್ಕರಿಸುವ ಅಗತ್ಯವಿಲ್ಲ. ನಾವು ಈಗಾಗಲೇ ಸಿದ್ದವಾಗಿರುವ ಟೆಂಪ್ಲೇಟ್ ಅನ್ನು ಹೊಂದಿದ್ದೇವೆ ಮತ್ತು ನಾವು ಅದನ್ನು ನಿರ್ದಿಷ್ಟ ಪ್ರೋಗ್ರಾಂನಲ್ಲಿ ಅನ್ವಯಿಸಬೇಕಾಗಿದೆ.

ಇದಲ್ಲದೆ, ಮಾದರಿಗಳು, ನಿಯಮದಂತೆ, ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆಯನ್ನು ಅವಲಂಬಿಸಿರುವುದಿಲ್ಲ. ಅವರ ಅನ್ವಯದ ತತ್ವಗಳು C#, ಜೇವ್ ಮತ್ತು ಇತರ ಭಾಷೆಗಳಲ್ಲಿ ಹೋಲುತ್ತವೆ. ಈ ಮಾರ್ಗದರ್ಶಿಯೊಳಗೆ ನಾವು ಸಿ# ಭಾಷೆಯ ಸಂದರ್ಭದಲ್ಲಿ ಮಾದರಿಗಳ ಬಗ್ಗೆ ಮಾತನಾಡುತ್ತೇವೆ.

ಮಾದರಿಗಳಲ್ಲಿ ಯೋಚಿಸುವುದರಿಂದ ಗುಂಪುಗಳಲ್ಲಿ ಕಾರ್ಯಕ್ರಮಗಳನ್ನು ಅಭಿವೃದ್ಧಿಪಡಿಸುವುದು ಸುಲಭವಾಗುತ್ತದೆ. ಬಳಸಿದ ವಿನ್ಯಾಸದ ಮಾದರಿ ಮತ್ತು ಅದರ ಮೂಲ ತತ್ವಗಳನ್ನು ತಿಳಿದುಕೊಳ್ಳುವುದು ಇನ್ನೊಬ್ಬ ಪ್ರೋಗ್ರಾಮರ್‌ಗೆ ಅದರ ಅನುಷ್ಠಾನವನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು ಮತ್ತು ಬಳಸಲು ಸುಲಭವಾಗುತ್ತದೆ.

ಅದೇ ಸಮಯದಲ್ಲಿ, ಮಾದರಿಗಳ ಸಲುವಾಗಿ ನೀವು ಮಾದರಿಗಳನ್ನು ಬಳಸಬಾರದು. ಉತ್ತಮ ಪ್ರೋಗ್ರಾಂ ಮಾದರಿಗಳ ಬಳಕೆಯನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ. ಆದಾಗ್ಯೂ, ಮಾದರಿಗಳು ಯಾವಾಗಲೂ ಪ್ರೋಗ್ರಾಂ ಅನ್ನು ಸರಳಗೊಳಿಸುವುದಿಲ್ಲ ಮತ್ತು ಸುಧಾರಿಸುವುದಿಲ್ಲ. ಅವರ ನ್ಯಾಯಸಮ್ಮತವಲ್ಲದ ಬಳಕೆಯು ಪ್ರೋಗ್ರಾಂ ಕೋಡ್ನ ತೊಡಕು ಮತ್ತು ಅದರ ಗುಣಮಟ್ಟದಲ್ಲಿ ಇಳಿಕೆಗೆ ಕಾರಣವಾಗಬಹುದು. ಮಾದರಿಯನ್ನು ಸಮರ್ಥಿಸಬೇಕು ಮತ್ತು ಪರಿಣಾಮಕಾರಿ ಮಾರ್ಗಸಮಸ್ಯೆಯನ್ನು ಪರಿಹರಿಸುವುದು.

ವಿಭಿನ್ನ ಸಮಸ್ಯೆಗಳನ್ನು ಪರಿಹರಿಸುವ ಮತ್ತು ವಿಭಿನ್ನ ಕಾರ್ಯಗಳನ್ನು ನಿರ್ವಹಿಸುವ ಹಲವು ವಿಭಿನ್ನ ಮಾದರಿಗಳಿವೆ. ಆದರೆ ಅವರ ಕ್ರಿಯೆಯ ಪ್ರಕಾರ, ಅವುಗಳನ್ನು ಹಲವಾರು ಗುಂಪುಗಳಾಗಿ ಸಂಯೋಜಿಸಬಹುದು. ಮಾದರಿಗಳ ಕೆಲವು ಗುಂಪುಗಳನ್ನು ನೋಡೋಣ. ಮೂಲಭೂತ ಮಾದರಿಗಳ ವರ್ಗೀಕರಣವು ನಿರ್ದಿಷ್ಟ ಮಾದರಿಯು ನಿರ್ವಹಿಸುವ ಉದ್ದೇಶ ಅಥವಾ ಕಾರ್ಯಗಳನ್ನು ಆಧರಿಸಿದೆ.

ಜನರೇಟಿವ್ ಪ್ಯಾಟರ್ನ್ಸ್

ಉತ್ಪಾದಕ ಮಾದರಿಗಳು ತತ್‌ಕ್ಷಣದ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಅಮೂರ್ತಗೊಳಿಸುವ ಮಾದರಿಗಳಾಗಿವೆ ಅಥವಾ ಬೇರೆ ರೀತಿಯಲ್ಲಿ ಹೇಳುವುದಾದರೆ, ವರ್ಗಗಳು ಮತ್ತು ವಸ್ತುಗಳನ್ನು ಉತ್ಪಾದಿಸುವ ಪ್ರಕ್ರಿಯೆ. ಅವುಗಳಲ್ಲಿ ಈ ಕೆಳಗಿನವುಗಳು ಎದ್ದು ಕಾಣುತ್ತವೆ:

    ಬಿಲ್ಡರ್

    ಮೂಲಮಾದರಿ

    ಸಿಂಗಲ್ಟನ್

ಮಾದರಿಗಳ ಮತ್ತೊಂದು ಗುಂಪು - ರಚನಾತ್ಮಕ ಮಾದರಿಗಳು- ವರ್ಗಗಳು ಮತ್ತು ವಸ್ತುಗಳು ದೊಡ್ಡ ರಚನೆಗಳನ್ನು ಹೇಗೆ ರೂಪಿಸುತ್ತವೆ ಎಂಬುದನ್ನು ಪರಿಶೀಲಿಸುತ್ತದೆ - ವರ್ಗಗಳು ಮತ್ತು ಪ್ರಕೃತಿಯಲ್ಲಿ ಹೆಚ್ಚು ಸಂಕೀರ್ಣವಾದ ವಸ್ತುಗಳು. ಈ ಟೆಂಪ್ಲೇಟ್‌ಗಳು ಸೇರಿವೆ:

    ಅಡಾಪ್ಟರ್

    ಸೇತುವೆ

    ಸಂಯೋಜಿತ

    ಅಲಂಕಾರಕಾರ

    ಮುಂಭಾಗ

    ಫ್ಲೈವೇಟ್

    ಉಪ (ಪ್ರಾಕ್ಸಿ)

ಮೂರನೇ ಗುಂಪಿನ ಮಾದರಿಗಳನ್ನು ವರ್ತನೆಯ ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ - ಅವರು ವರ್ಗಗಳು ಮತ್ತು ವಸ್ತುಗಳ ನಡುವಿನ ಕ್ರಮಾವಳಿಗಳು ಮತ್ತು ಪರಸ್ಪರ ಕ್ರಿಯೆಗಳನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುತ್ತಾರೆ, ಅಂದರೆ, ಅವರ ನಡವಳಿಕೆ. ಅಂತಹ ಟೆಂಪ್ಲೆಟ್ಗಳಲ್ಲಿ ಈ ಕೆಳಗಿನವುಗಳಿವೆ:

    ಆಜ್ಞೆ

    ಇಂಟರ್ಪ್ರಿಟರ್

    ಪುನರಾವರ್ತಕ

    ಮಧ್ಯವರ್ತಿ

    ಗಾರ್ಡಿಯನ್ (ಮೆಮೆಂಟೋ)

    ವೀಕ್ಷಕ

    ರಾಜ್ಯ

    ತಂತ್ರ

    ಟೆಂಪ್ಲೇಟ್ ವಿಧಾನ

    ಸಂದರ್ಶಕ

ಮಾದರಿಯು ವರ್ಗಗಳು ಅಥವಾ ವಸ್ತುಗಳಿಗೆ ಸೇರಿದೆಯೇ ಎಂಬುದನ್ನು ಅವಲಂಬಿಸಿ ಮಾದರಿಗಳ ಇತರ ವರ್ಗೀಕರಣಗಳಿವೆ.

ವರ್ಗ ಮಾದರಿಗಳು ಆನುವಂಶಿಕತೆಯ ಮೂಲಕ ವರ್ಗಗಳ ನಡುವಿನ ಸಂಬಂಧಗಳನ್ನು ವಿವರಿಸುತ್ತದೆ. ವರ್ಗಗಳ ನಡುವಿನ ಸಂಬಂಧಗಳನ್ನು ಕಂಪೈಲ್ ಸಮಯದಲ್ಲಿ ನಿರ್ಧರಿಸಲಾಗುತ್ತದೆ. ಈ ಮಾದರಿಗಳು ಸೇರಿವೆ:

    ಫ್ಯಾಕ್ಟರಿ ವಿಧಾನ

    ಇಂಟರ್ಪ್ರಿಟರ್

    ಟೆಂಪ್ಲೇಟ್ ವಿಧಾನ

    ಅಡಾಪ್ಟರ್

ಮಾದರಿಗಳ ಮತ್ತೊಂದು ಭಾಗ - ವಸ್ತು ಮಾದರಿಗಳುವಸ್ತುಗಳ ನಡುವಿನ ಸಂಬಂಧವನ್ನು ವಿವರಿಸಿ. ಈ ಸಂಬಂಧಗಳು ರನ್ಟೈಮ್ನಲ್ಲಿ ಸಂಭವಿಸುತ್ತವೆ ಮತ್ತು ಆದ್ದರಿಂದ ಹೆಚ್ಚು ಮೃದುವಾಗಿರುತ್ತದೆ. ವಸ್ತುವಿನ ಮಾದರಿಗಳು ಈ ಕೆಳಗಿನವುಗಳನ್ನು ಒಳಗೊಂಡಿವೆ:

    ಅಮೂರ್ತ ಕಾರ್ಖಾನೆ

    ಬಿಲ್ಡರ್

    ಮೂಲಮಾದರಿ

    ಸಿಂಗಲ್ಟನ್

    ಸೇತುವೆ

    ಸಂಯೋಜಿತ

    ಅಲಂಕಾರಕಾರ

    ಮುಂಭಾಗ

    ಫ್ಲೈವೇಟ್

    ಉಪ (ಪ್ರಾಕ್ಸಿ)

    ಜವಾಬ್ದಾರಿಯ ಸರಪಳಿ

    ಆಜ್ಞೆ

    ಪುನರಾವರ್ತಕ

    ಮಧ್ಯವರ್ತಿ

    ಗಾರ್ಡಿಯನ್ (ಮೆಮೆಂಟೋ)

    ವೀಕ್ಷಕ

    ರಾಜ್ಯ

    ತಂತ್ರ

    ಸಂದರ್ಶಕ

ಮತ್ತು ಇವು ಕೇವಲ ಕೆಲವು ಮುಖ್ಯ ಮಾದರಿಗಳಾಗಿವೆ. ಸಾಮಾನ್ಯವಾಗಿ, ಹಲವು ವಿಭಿನ್ನ ವಿನ್ಯಾಸ ಮಾದರಿಗಳಿವೆ. ಅವುಗಳಲ್ಲಿ ಕೆಲವು ಈಗ ಬಳಸಲು ಪ್ರಾರಂಭಿಸಿವೆ, ಇತರವುಗಳು ಪ್ರಸ್ತುತ ಜನಪ್ರಿಯವಾಗಿವೆ, ಮತ್ತು ಕೆಲವು ಈಗಾಗಲೇ ಮೊದಲಿಗಿಂತ ಕಡಿಮೆ ಸಾಮಾನ್ಯವಾಗಿದೆ.

ಮತ್ತು ಈ ಮಾರ್ಗದರ್ಶಿಯಲ್ಲಿ ನಾವು C# ಭಾಷೆಗೆ ಸಂಬಂಧಿಸಿದಂತೆ ಅವುಗಳ ಬಳಕೆಯ ಅತ್ಯಂತ ಮೂಲಭೂತ ಮತ್ತು ಸಾಮಾನ್ಯ ಮಾದರಿಗಳು ಮತ್ತು ತತ್ವಗಳನ್ನು ನೋಡುತ್ತೇವೆ.

ಸರಿಯಾದ ಮಾದರಿಯನ್ನು ಹೇಗೆ ಆರಿಸುವುದು?

ಮೊದಲನೆಯದಾಗಿ, ಸಮಸ್ಯೆಯನ್ನು ಪರಿಹರಿಸುವಾಗ, ನೀವು ಬಳಸಿದ ಎಲ್ಲಾ ಘಟಕಗಳನ್ನು ಮತ್ತು ಅವುಗಳ ನಡುವಿನ ಸಂಪರ್ಕಗಳನ್ನು ಗುರುತಿಸಬೇಕು ಮತ್ತು ನಿರ್ದಿಷ್ಟ ಪರಿಸ್ಥಿತಿಯಿಂದ ಅವುಗಳನ್ನು ಅಮೂರ್ತಗೊಳಿಸಬೇಕು. ನಂತರ ಸಮಸ್ಯೆಯನ್ನು ಪರಿಹರಿಸುವ ಅಮೂರ್ತ ರೂಪವು ಒಂದು ನಿರ್ದಿಷ್ಟ ಮಾದರಿಗೆ ಸರಿಹೊಂದುತ್ತದೆಯೇ ಎಂದು ನೀವು ನೋಡಬೇಕು. ಉದಾಹರಣೆಗೆ, ಪರಿಹರಿಸಲಾಗುವ ಸಮಸ್ಯೆಯ ಸಾರವು ಹೊಸ ವಸ್ತುಗಳ ಸೃಷ್ಟಿಯಾಗಿರಬಹುದು. ಈ ಸಂದರ್ಭದಲ್ಲಿ, ಉತ್ಪಾದಕ ಮಾದರಿಗಳನ್ನು ನೋಡುವುದು ಯೋಗ್ಯವಾಗಿದೆ. ಇದಲ್ಲದೆ, ತಕ್ಷಣವೇ ನಿರ್ದಿಷ್ಟ ಮಾದರಿಯನ್ನು ತೆಗೆದುಕೊಳ್ಳದಿರುವುದು ಉತ್ತಮ - ಮೊದಲನೆಯದು ಅಗತ್ಯವೆಂದು ತೋರುತ್ತದೆ, ಆದರೆ ಅದೇ ಸಮಸ್ಯೆಯನ್ನು ಪರಿಹರಿಸುವ ಒಂದೇ ಗುಂಪಿನಿಂದ ಹಲವಾರು ಸಂಬಂಧಿತ ಮಾದರಿಗಳನ್ನು ನೋಡುವುದು.

ಅದೇ ಸಮಯದಲ್ಲಿ, ಅದರ ಅಮೂರ್ತ ಸಂಘಟನೆ ಮತ್ತು ಅದರ ಸಂಭವನೀಯ ಕಾಂಕ್ರೀಟ್ ಅನುಷ್ಠಾನಗಳನ್ನು ಸ್ಪಷ್ಟವಾಗಿ ಪ್ರತಿನಿಧಿಸಲು, ಮಾದರಿಯ ಅರ್ಥ ಮತ್ತು ಉದ್ದೇಶವನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು ಮುಖ್ಯವಾಗಿದೆ. ಒಂದು ಮಾದರಿಯು ವಿಭಿನ್ನ ಅಳವಡಿಕೆಗಳನ್ನು ಹೊಂದಬಹುದು, ಮತ್ತು ಈ ಅಳವಡಿಕೆಗಳನ್ನು ನೀವು ಹೆಚ್ಚಾಗಿ ಎದುರಿಸುತ್ತೀರಿ, ಮಾದರಿಯ ಅರ್ಥವನ್ನು ನೀವು ಚೆನ್ನಾಗಿ ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿರಿ. ಆದರೆ ನೀವು ಅದನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳದಿದ್ದರೆ ನೀವು ಮಾದರಿಯನ್ನು ಬಳಸಬಾರದು, ಮೊದಲ ನೋಟದಲ್ಲಿ ಅದು ಸಮಸ್ಯೆಯನ್ನು ಪರಿಹರಿಸಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ.

ಮತ್ತು ಅಂತಿಮವಾಗಿ, ನಾವು KISS ತತ್ವಕ್ಕೆ ಬದ್ಧರಾಗಿರಬೇಕು (ಕೀಪ್ ಇಟ್ ಸಿಂಪಲ್, ಸ್ಟುಪಿಡ್) - ಪ್ರೋಗ್ರಾಂ ಕೋಡ್ ಅನ್ನು ಸಾಧ್ಯವಾದಷ್ಟು ಸರಳವಾಗಿ ಮತ್ತು ಸ್ಪಷ್ಟವಾಗಿ ಇರಿಸಿ. ಎಲ್ಲಾ ನಂತರ, ಮಾದರಿಗಳ ಪಾಯಿಂಟ್ ಪ್ರೋಗ್ರಾಂ ಕೋಡ್ ಅನ್ನು ಸಂಕೀರ್ಣಗೊಳಿಸುವುದಿಲ್ಲ, ಆದರೆ ಅದನ್ನು ಸರಳಗೊಳಿಸುವುದು.

ವಿನ್ಯಾಸದ ಮಾದರಿಗಳು ಯಾವುವು ಎಂದು ನೀವು ಎಂದಾದರೂ ಯೋಚಿಸಿದ್ದರೆ, ನಂತರ ಸ್ವಾಗತ. ಈ ಲೇಖನದಲ್ಲಿ ಅವು ಯಾವುವು, ಅವು ಏಕೆ ಬೇಕು, ಅವುಗಳನ್ನು ಹೇಗೆ ಬಳಸುವುದು ಮತ್ತು PHP ಯಲ್ಲಿನ ಸಾಮಾನ್ಯ ಟೆಂಪ್ಲೆಟ್ಗಳ ಉದಾಹರಣೆಗಳನ್ನು ನೀಡುತ್ತೇನೆ ಎಂದು ನಾನು ನಿಮಗೆ ಹೇಳುತ್ತೇನೆ.

ವಿನ್ಯಾಸ ಮಾದರಿಗಳು ಯಾವುವು?

ದೈನಂದಿನ ಪ್ರೋಗ್ರಾಮಿಂಗ್‌ನಲ್ಲಿ ಆಗಾಗ್ಗೆ ಎದುರಾಗುವ ಸಮಸ್ಯೆಗಳಿಗೆ ವಿನ್ಯಾಸದ ಮಾದರಿಗಳು ಸಾಬೀತಾಗಿದೆ, ಬಳಸಲು ಸಿದ್ಧ ಪರಿಹಾರಗಳು. ಇದು ಪ್ರಾಜೆಕ್ಟ್‌ಗೆ ಸಂಪರ್ಕಿಸಬಹುದಾದ ತರಗತಿ ಅಥವಾ ಲೈಬ್ರರಿ ಅಲ್ಲ, ಇದು ಹೆಚ್ಚಿನದಾಗಿದೆ. ಪ್ರತಿ ನಿರ್ದಿಷ್ಟ ಪ್ರಕರಣದಲ್ಲಿ ಕಾರ್ಯಕ್ಕೆ ಸೂಕ್ತವಾದ ವಿನ್ಯಾಸ ಮಾದರಿಯನ್ನು ಅಳವಡಿಸಲಾಗಿದೆ. ಜೊತೆಗೆ, ಇದು ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆಯಿಂದ ಸ್ವತಂತ್ರವಾಗಿದೆ. ಭಾಷೆಯ ಅಭಿವ್ಯಕ್ತಿಶೀಲತೆಯನ್ನು ಅವಲಂಬಿಸಿ ಎಲ್ಲಾ ಭಾಷೆಗಳಲ್ಲಿ ಅಲ್ಲದಿದ್ದರೂ ಉತ್ತಮ ಮಾದರಿಯನ್ನು ಸುಲಭವಾಗಿ ಅಳವಡಿಸಲಾಗಿದೆ. ಆದಾಗ್ಯೂ, ಅಂತಹ ಮಾದರಿಯು ತಪ್ಪಾಗಿ ಅಥವಾ ತಪ್ಪಾದ ಸಮಸ್ಯೆಗೆ ಅನ್ವಯಿಸಿದರೆ, ಬಹಳಷ್ಟು ಸಮಸ್ಯೆಗಳನ್ನು ಉಂಟುಮಾಡಬಹುದು ಎಂದು ನೆನಪಿನಲ್ಲಿಡಬೇಕು. ಆದಾಗ್ಯೂ, ಸರಿಯಾಗಿ ಅನ್ವಯಿಸಲಾದ ಟೆಂಪ್ಲೇಟ್ ಸಮಸ್ಯೆಯನ್ನು ಸುಲಭವಾಗಿ ಮತ್ತು ಸರಳವಾಗಿ ಪರಿಹರಿಸಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ.

ಮೂರು ವಿಧದ ಟೆಂಪ್ಲೆಟ್ಗಳಿವೆ:

  • ರಚನಾತ್ಮಕ;
  • ಉತ್ಪಾದಿಸುವುದು;
  • ವರ್ತನೆಯ.

ರಚನಾತ್ಮಕಟೆಂಪ್ಲೇಟ್‌ಗಳು ತರಗತಿಗಳು ಮತ್ತು ವಸ್ತುಗಳ ನಡುವಿನ ಸಂಬಂಧಗಳನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುತ್ತವೆ, ಅವುಗಳು ಒಟ್ಟಿಗೆ ಕೆಲಸ ಮಾಡಲು ಅನುವು ಮಾಡಿಕೊಡುತ್ತದೆ.

ಉತ್ಪಾದಕಟೆಂಪ್ಲೇಟ್‌ಗಳು ಪ್ರಾರಂಭಿಕ ಕಾರ್ಯವಿಧಾನಗಳನ್ನು ಒದಗಿಸುತ್ತವೆ, ಇದು ನಿಮಗೆ ಅನುಕೂಲಕರ ರೀತಿಯಲ್ಲಿ ವಸ್ತುಗಳನ್ನು ರಚಿಸಲು ಅನುಮತಿಸುತ್ತದೆ.

ವರ್ತನೆಯಘಟಕಗಳ ನಡುವಿನ ಪರಸ್ಪರ ಕ್ರಿಯೆಯನ್ನು ಸರಳಗೊಳಿಸಲು ಟೆಂಪ್ಲೇಟ್‌ಗಳನ್ನು ಬಳಸಲಾಗುತ್ತದೆ.

ವಿನ್ಯಾಸ ಮಾದರಿಗಳು ಏಕೆ ಬೇಕು?

ವಿನ್ಯಾಸದ ಮಾದರಿಯು ಅದರ ಮಧ್ಯಭಾಗದಲ್ಲಿ ಒಂದು ನಿರ್ದಿಷ್ಟ ಸಮಸ್ಯೆಗೆ ಚಿಂತನಶೀಲ ಪರಿಹಾರವಾಗಿದೆ. ನೀವು ತಿಳಿದಿರುವ ಸಮಸ್ಯೆಯನ್ನು ಎದುರಿಸುತ್ತಿದ್ದರೆ, ಸಿದ್ಧವಾದ, ಸಾಬೀತಾದ ಪರಿಹಾರವನ್ನು ಏಕೆ ಬಳಸಬಾರದು?

ಉದಾಹರಣೆ

ಪರಿಸ್ಥಿತಿಗೆ ಅನುಗುಣವಾಗಿ ವಿಭಿನ್ನ ಕಾರ್ಯಾಚರಣೆಗಳನ್ನು ನಿರ್ವಹಿಸುವ ಎರಡು ವರ್ಗಗಳನ್ನು ನೀವು ಸಂಯೋಜಿಸಬೇಕಾಗಿದೆ ಎಂದು ಊಹಿಸೋಣ. ಈ ವರ್ಗಗಳು ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ವ್ಯವಸ್ಥೆಯಿಂದ ಹೆಚ್ಚು ಬಳಸಲ್ಪಡುತ್ತವೆ, ಇದು ಅವುಗಳಲ್ಲಿ ಒಂದನ್ನು ತೆಗೆದುಹಾಕಲು ಮತ್ತು ಅದರ ಕಾರ್ಯವನ್ನು ಎರಡನೆಯದಕ್ಕೆ ಸೇರಿಸಲು ಅಸಾಧ್ಯವಾಗುತ್ತದೆ. ಹೆಚ್ಚುವರಿಯಾಗಿ, ಕೋಡ್ ಅನ್ನು ಬದಲಾಯಿಸುವುದರಿಂದ ಎಚ್ಚರಿಕೆಯ ಪರೀಕ್ಷೆಯ ಅಗತ್ಯವಿರುತ್ತದೆ, ಏಕೆಂದರೆ ಅಂತಹ ರಿಫ್ಯಾಕ್ಟರಿಂಗ್ ಅನಿವಾರ್ಯ ದೋಷಗಳಿಗೆ ಕಾರಣವಾಗುತ್ತದೆ. ಬದಲಾಗಿ, ನೀವು ಕಾರ್ಯತಂತ್ರ ಮತ್ತು ಅಡಾಪ್ಟರ್ ಮಾದರಿಗಳನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಬಹುದು ಮತ್ತು ಸಮಸ್ಯೆಯನ್ನು ಪರಿಹರಿಸಲು ಅವುಗಳನ್ನು ಬಳಸಬಹುದು.

ವರ್ಗ ಸ್ಟ್ರಾಟಜಿ ಮತ್ತು ಅಡಾಪ್ಟರ್ ಎಕ್ಸಾಂಪಲ್ ಕ್ಲಾಸ್{

ಖಾಸಗಿ $_class_one ;

ಖಾಸಗಿ $_ಕ್ಲಾಸ್_ಎರಡು ;

ಖಾಸಗಿ $_ಸಂದರ್ಭ ;

ಸಾರ್ವಜನಿಕ ಕಾರ್ಯ __ನಿರ್ಮಾಣ ($ಸಂದರ್ಭ) (

$ಇದು -> _ಸಂದರ್ಭ = $ಸಂದರ್ಭ ;

ಸಾರ್ವಜನಿಕ ಕಾರ್ಯ ಕಾರ್ಯಾಚರಣೆ1() (

ವೇಳೆ ($this -> _context == "context_for_class_one" ) (

$this -> _class_one -> ಕಾರ್ಯಾಚರಣೆ1_ಒಂದು_ವರ್ಗದಲ್ಲಿ_ಸಂದರ್ಭದಲ್ಲಿ() ;

) ಬೇರೆ ($this -> _context == "context_for_class_two" ) (

$ಇದು -> _ಕ್ಲಾಸ್_ಎರಡು -> ಕಾರ್ಯಾಚರಣೆ1_ಇನ್_ಕ್ಲಾಸ್_ಎರಡು_ಸಂದರ್ಭ() ;

ಸರಳ, ಅಲ್ಲವೇ? ಸ್ಟ್ರಾಟಜಿ ಟೆಂಪ್ಲೇಟ್ ಅನ್ನು ಹತ್ತಿರದಿಂದ ನೋಡೋಣ.

ಟೆಂಪ್ಲೇಟ್ "ತಂತ್ರ"

ತಂತ್ರ- ವಿವಿಧ ವರ್ಗಗಳಲ್ಲಿ ಹಲವಾರು ಅಲ್ಗಾರಿದಮ್‌ಗಳನ್ನು ಆವರಿಸುವ ಮೂಲಕ ಸಂದರ್ಭಕ್ಕೆ ಅನುಗುಣವಾಗಿ ಕಾರ್ಯಗತಗೊಳಿಸುವ ಸಮಯದಲ್ಲಿ ಪ್ರೋಗ್ರಾಂನ ನಡವಳಿಕೆಯನ್ನು ಆಯ್ಕೆ ಮಾಡಲು ನಿಮಗೆ ಅನುಮತಿಸುವ ವರ್ತನೆಯ ಮಾದರಿ.

ಮೇಲಿನ ಉದಾಹರಣೆಯಲ್ಲಿ, ತಂತ್ರದ ಆಯ್ಕೆಯು ವಸ್ತುವನ್ನು ರಚಿಸಿದ ಸಮಯದಲ್ಲಿ $ ಸಂದರ್ಭ ವೇರಿಯಬಲ್‌ನ ಮೌಲ್ಯವನ್ನು ಆಧರಿಸಿದೆ. ಮೌಲ್ಯವು "context_for_class_one" ಆಗಿದ್ದರೆ, ಪ್ರೋಗ್ರಾಂ class_one ಅನ್ನು ಬಳಸುತ್ತದೆ. ಮತ್ತು ಪ್ರತಿಯಾಗಿ.

ಸರಿ, ಆದರೆ ಇದನ್ನು ಎಲ್ಲಿ ಬಳಸಬಹುದು?


ಡೇಟಾಬೇಸ್‌ನಲ್ಲಿ ದಾಖಲೆಯನ್ನು ರಚಿಸುವ ಅಥವಾ ನವೀಕರಿಸಬಹುದಾದ ವರ್ಗವನ್ನು ನೀವು ಅಭಿವೃದ್ಧಿಪಡಿಸುತ್ತಿದ್ದೀರಿ ಎಂದು ಕಲ್ಪಿಸಿಕೊಳ್ಳಿ. ಎರಡೂ ಸಂದರ್ಭಗಳಲ್ಲಿ, ಇನ್ಪುಟ್ ನಿಯತಾಂಕಗಳು ಒಂದೇ ಆಗಿರುತ್ತವೆ (ಹೆಸರು, ವಿಳಾಸ, ಫೋನ್ ಸಂಖ್ಯೆ, ಇತ್ಯಾದಿ), ಆದರೆ, ಪರಿಸ್ಥಿತಿಯನ್ನು ಅವಲಂಬಿಸಿ, ಅವರು ದಾಖಲೆಯನ್ನು ನವೀಕರಿಸಲು ಮತ್ತು ರಚಿಸಲು ವಿಭಿನ್ನ ಕಾರ್ಯಗಳನ್ನು ಬಳಸಬೇಕಾಗುತ್ತದೆ. ನೀವು ಪ್ರತಿ ಬಾರಿಯೂ if/else ಸ್ಥಿತಿಯನ್ನು ಪುನಃ ಬರೆಯಬಹುದು ಅಥವಾ ಸಂದರ್ಭವನ್ನು ಸ್ವೀಕರಿಸುವ ಒಂದು ವಿಧಾನವನ್ನು ನೀವು ರಚಿಸಬಹುದು:

ವಿಶಿಷ್ಟವಾಗಿ, ಸ್ಟ್ರಾಟಜಿ ಮಾದರಿಯು ಅಲ್ಗಾರಿದಮ್‌ಗಳನ್ನು ವರ್ಗಗಳಾಗಿ ಸುತ್ತುವರಿಯುವುದನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ, ಆದರೆ ಈ ಸಂದರ್ಭದಲ್ಲಿ ಇದು ಅನಗತ್ಯವಾಗಿರುತ್ತದೆ. ನೀವು ಪದಕ್ಕೆ ಟೆಂಪ್ಲೇಟ್ ಅನ್ನು ಅನುಸರಿಸಬೇಕಾಗಿಲ್ಲ ಎಂಬುದನ್ನು ನೆನಪಿಡಿ. ಅವರು ಸಮಸ್ಯೆಯನ್ನು ಪರಿಹರಿಸಿದರೆ ಮತ್ತು ಪರಿಕಲ್ಪನೆಗೆ ಅನುಗುಣವಾಗಿದ್ದರೆ ಯಾವುದೇ ಆಯ್ಕೆಗಳು ಸ್ವೀಕಾರಾರ್ಹ.

ಅಡಾಪ್ಟರ್ ಟೆಂಪ್ಲೇಟ್


ಅಡಾಪ್ಟರ್- ಅಪೇಕ್ಷಿತ ಕಾರ್ಯಗಳನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುವ ವರ್ಗವನ್ನು ಬಳಸಲು ನಿಮಗೆ ಅನುಮತಿಸುವ ರಚನಾತ್ಮಕ ಮಾದರಿ, ಆದರೆ ಸೂಕ್ತವಲ್ಲದ ಇಂಟರ್ಫೇಸ್.

ಆಂತರಿಕ ವರ್ಗದ ಇಂಟರ್‌ಫೇಸ್‌ಗೆ ಹೊಂದಿಕೆಯಾಗುವಂತೆ ಕೆಲವು ಇನ್‌ಪುಟ್‌ಗಳನ್ನು ಬದಲಾಯಿಸಲು ಇದು ನಿಮ್ಮನ್ನು ಅನುಮತಿಸುತ್ತದೆ.

ಅದನ್ನು ಹೇಗೆ ಬಳಸುವುದು?


ಅಡಾಪ್ಟರ್‌ಗೆ ಇನ್ನೊಂದು ಹೆಸರು "ವ್ರ್ಯಾಪ್". ಇದು ಬಳಕೆಗಾಗಿ ವರ್ಗದ ಸುತ್ತಲೂ ಹೊಸ ಇಂಟರ್ಫೇಸ್ ಅನ್ನು "ಸುತ್ತುತ್ತದೆ". ಒಂದು ಶ್ರೇಷ್ಠ ಉದಾಹರಣೆ: ಡೇಟಾಬೇಸ್‌ನಲ್ಲಿ ಆಬ್ಜೆಕ್ಟ್ ತರಗತಿಗಳನ್ನು ಹೊಂದಿರುವ ಡೊಮೇನ್ ಮಾದರಿ ವರ್ಗವನ್ನು ನೀವು ರಚಿಸಬೇಕಾಗಿದೆ. ಟೇಬಲ್ ತರಗತಿಗಳನ್ನು ನೇರವಾಗಿ ಪ್ರವೇಶಿಸುವ ಬದಲು ಮತ್ತು ಅವುಗಳ ವಿಧಾನಗಳನ್ನು ಒಂದೊಂದಾಗಿ ಕರೆಯುವ ಬದಲು, ನೀವು ಅಡಾಪ್ಟರ್‌ನಲ್ಲಿ ಒಂದೇ ವಿಧಾನದಲ್ಲಿ ಆ ವಿಧಾನಗಳಿಗೆ ಕರೆಗಳನ್ನು ಎನ್‌ಕ್ಯಾಪ್ಸುಲೇಟ್ ಮಾಡಬಹುದು. ಇದು ಕಾರ್ಯಾಚರಣೆಗಳ ಗುಂಪನ್ನು ಮರುಬಳಕೆ ಮಾಡಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ, ಆದರೆ ನಿರಂತರ ಪುನಃ ಬರೆಯುವಿಕೆಯಿಂದ ನಿಮ್ಮನ್ನು ಉಳಿಸುತ್ತದೆ ದೊಡ್ಡ ಪ್ರಮಾಣದಲ್ಲಿನೀವು ಇನ್ನೊಂದು ಸ್ಥಳದಲ್ಲಿ ಅದೇ ರೀತಿಯ ಕ್ರಿಯೆಗಳನ್ನು ಮಾಡಬೇಕಾದರೆ ಕೋಡ್ ಮಾಡಿ.

ಎರಡು ಉದಾಹರಣೆಗಳನ್ನು ಹೋಲಿಕೆ ಮಾಡಿ.

ಅಡಾಪ್ಟರ್ ಇಲ್ಲದೆ

$ ಬಳಕೆದಾರ = ಹೊಸ ಬಳಕೆದಾರ();

$user ->

$profile = ಹೊಸ ಪ್ರೊಫೈಲ್ () ;

$profile -> CreateOrUpdate(//parameters);

ನಾವು ಅಂತಹ ಕೋಡ್ ಅನ್ನು ಮರುಬಳಕೆ ಮಾಡಬೇಕಾದರೆ, ನಾವು ಸಂಪೂರ್ಣ ವಿಷಯವನ್ನು ಪುನಃ ಬರೆಯಲು ಒತ್ತಾಯಿಸುತ್ತೇವೆ.

ಅಡಾಪ್ಟರ್ ಬಳಸುವುದು

ನಾವು ಖಾತೆಯ ಹೊದಿಕೆ ವರ್ಗವನ್ನು ರಚಿಸಬಹುದು:

ವರ್ಗ ಖಾತೆ()

ಸಾರ್ವಜನಿಕ ಕಾರ್ಯ ಹೊಸ ಖಾತೆ (// ನಿಯತಾಂಕಗಳು)

$ ಬಳಕೆದಾರ = ಹೊಸ ಬಳಕೆದಾರ();

$user -> CreateOrUpdate ( // ನಿಯತಾಂಕಗಳ ಭಾಗ);

$profile = ಹೊಸ ಪ್ರೊಫೈಲ್ () ;

$profile -> CreateOrUpdate ( // ನಿಯತಾಂಕಗಳ ಭಾಗ);

$account_domain = ಹೊಸ ಖಾತೆ();

$account_domain -> NewAccount (//parameters);

ಈಗ ನಾವು ಪ್ರತಿ ಬಾರಿ ಖಾತೆ ವರ್ಗವನ್ನು ಬಳಸಬಹುದು ಮತ್ತು ಹೆಚ್ಚುವರಿಯಾಗಿ ನಾವು ಅದಕ್ಕೆ ಹೆಚ್ಚುವರಿ ಕಾರ್ಯವನ್ನು ಸೇರಿಸಬಹುದು.

ಫ್ಯಾಕ್ಟರಿ ವಿಧಾನ ಟೆಂಪ್ಲೇಟ್


ಕಾರ್ಖಾನೆ- ಉತ್ಪಾದಿಸುವ ಟೆಂಪ್ಲೇಟ್, ಇದು ವಿವಿಧ ವಸ್ತುಗಳನ್ನು ರಚಿಸುವ ವಿಧಾನವನ್ನು ಹೊಂದಿರುವ ವರ್ಗವಾಗಿದೆ.

ಈ ಮಾದರಿಯ ಮುಖ್ಯ ಉದ್ದೇಶವು ಒಂದೇ ಕಾರ್ಯದಲ್ಲಿ ವಿವಿಧ ವರ್ಗಗಳನ್ನು ರಚಿಸುವ ಕಾರ್ಯವಿಧಾನವನ್ನು ಸುತ್ತುವರಿಯುವುದು, ಅದು ಅದಕ್ಕೆ ರವಾನಿಸಲಾದ ಸಂದರ್ಭವನ್ನು ಅವಲಂಬಿಸಿ, ಅಗತ್ಯವಿರುವ ವಸ್ತುವನ್ನು ಹಿಂದಿರುಗಿಸುತ್ತದೆ.

ಅದನ್ನು ಹೇಗೆ ಬಳಸುವುದು?


ಮೂಲ ವರ್ಗದ ವಿವಿಧ ರೂಪಾಂತರಗಳನ್ನು ರಚಿಸಲು ಕಾರ್ಖಾನೆಯನ್ನು ಸಾಮಾನ್ಯವಾಗಿ ಬಳಸಲಾಗುತ್ತದೆ. ನೀವು ಬಟನ್ ವರ್ಗವನ್ನು ಹೊಂದಿರುವಿರಿ ಎಂದು ಹೇಳೋಣ - ಬಟನ್ - ಮತ್ತು ಮೂರು ಆಯ್ಕೆಗಳು - ಇಮೇಜ್‌ಬಟನ್, ಇನ್‌ಪುಟ್‌ಬಟನ್ ಮತ್ತು ಫ್ಲ್ಯಾಶ್‌ಬಟನ್. ಕಾರ್ಖಾನೆಯನ್ನು ಬಳಸಿಕೊಂಡು, ನೀವು ಪರಿಸ್ಥಿತಿಯನ್ನು ಅವಲಂಬಿಸಿ ಗುಂಡಿಗಳ ವಿವಿಧ ಮಾರ್ಪಾಡುಗಳನ್ನು ರಚಿಸಬಹುದು.

ಮೊದಲಿಗೆ, ನಾವು ಮೂರು ವರ್ಗಗಳನ್ನು ರಚಿಸೋಣ:

ಅಮೂರ್ತ ವರ್ಗ ಬಟನ್ (

ರಕ್ಷಿತ $_html ;

ಸಾರ್ವಜನಿಕ ಕಾರ್ಯ getHtml()

$this -> _html ಹಿಂತಿರುಗಿ;

ವರ್ಗ ಇಮೇಜ್ ಬಟನ್ ವಿಸ್ತರಿಸುವ ಬಟನ್ (

ರಕ್ಷಿತ $_html = "..." ; // ಇಮೇಜ್ ಬಟನ್‌ಗಾಗಿ HTML ಕೋಡ್

ವರ್ಗ ಇನ್‌ಪುಟ್‌ಬಟನ್ ಬಟನ್ ವಿಸ್ತರಿಸುತ್ತದೆ (

ರಕ್ಷಿತ $_html = "..." ; // ಸಾಮಾನ್ಯ ಬಟನ್‌ಗಾಗಿ HTML ಕೋಡ್ ( );

ಕ್ಲಾಸ್ ಫ್ಲ್ಯಾಶ್‌ಬಟನ್ ಬಟನ್ ವಿಸ್ತರಿಸುತ್ತದೆ (

ರಕ್ಷಿತ $_html = "..." ; // ಫ್ಲ್ಯಾಶ್ ಬಟನ್‌ನ HTML ಕೋಡ್

ಈಗ ನಾವು ನಮ್ಮ ಕಾರ್ಖಾನೆಯನ್ನು ಬರೆಯಬಹುದು:

ವರ್ಗ ಬಟನ್ ಫ್ಯಾಕ್ಟರಿ

ಸಾರ್ವಜನಿಕ ಸ್ಥಿರ ಕಾರ್ಯ ಕ್ರಿಯೇಟ್ ಬಟನ್ ($ಟೈಪ್)

$baseClass = "ಬಟನ್" ;

$targetClass = ucfirst ($type) . $baseClass ;

ಒಂದು ವೇಳೆ (class_exist ($targetClass ) && is_subclass_of ($targetClass , $baseClass )) (

ಹೊಸ $targetClass ಹಿಂತಿರುಗಿ;

) ಬೇರೆ (

ಹೊಸ ವಿನಾಯಿತಿಯನ್ನು ಎಸೆಯಿರಿ ( "$ಟೈಪ್" ಬಟನ್ ಪ್ರಕಾರವನ್ನು ಗುರುತಿಸಲಾಗಿಲ್ಲ.") ;

ಮತ್ತು ಅದನ್ನು ಬಳಸಿ:

$ಬಟನ್ಸ್ = ಅರೇ ("ಚಿತ್ರ" , "ಇನ್ಪುಟ್" , "ಫ್ಲಾಶ್" );

foreach ($ಬಟನ್‌ಗಳು $b) (

echo ButtonFactory ::createButton($b) -> getHtml()

ಔಟ್‌ಪುಟ್ ಎಲ್ಲಾ ರೀತಿಯ ಬಟನ್‌ಗಳೊಂದಿಗೆ HTML ಆಗಿರಬೇಕು. ಈ ರೀತಿಯಾಗಿ ನಮಗೆ ಯಾವ ರೀತಿಯ ಬಟನ್ ಬೇಕು ಎಂಬುದನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸಲು ಮತ್ತು ಕೋಡ್ ಅನ್ನು ಮರುಬಳಕೆ ಮಾಡಲು ನಮಗೆ ಸಾಧ್ಯವಾಯಿತು.

ಡೆಕೋರೇಟರ್ ಟೆಂಪ್ಲೇಟ್


ಅಲಂಕಾರಕಾರಇದು ರಚನಾತ್ಮಕ ಮಾದರಿಯಾಗಿದ್ದು ಅದು ಪರಿಸ್ಥಿತಿಗೆ ಅನುಗುಣವಾಗಿ ಪ್ರೋಗ್ರಾಂ ಎಕ್ಸಿಕ್ಯೂಶನ್ ಸಮಯದಲ್ಲಿ ವಸ್ತುವಿಗೆ ಹೊಸ ನಡವಳಿಕೆಯನ್ನು ಸೇರಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ.

ಮೂಲ ವರ್ಗದ ನಡವಳಿಕೆಯನ್ನು ಬದಲಾಯಿಸದೆಯೇ ನಿರ್ದಿಷ್ಟ ವಸ್ತುವಿನ ನಡವಳಿಕೆಯನ್ನು ವಿಸ್ತರಿಸುವುದು ಗುರಿಯಾಗಿದೆ. ಏಕಕಾಲದಲ್ಲಿ ಅನೇಕ ಡೆಕೋರೇಟರ್‌ಗಳನ್ನು ಬಳಸಲು ಇದು ನಿಮ್ಮನ್ನು ಅನುಮತಿಸುತ್ತದೆ. ಈ ಮಾದರಿಯು ಆನುವಂಶಿಕತೆಗೆ ಪರ್ಯಾಯವಾಗಿದೆ. ಪಿತ್ರಾರ್ಜಿತವಾಗಿ ಭಿನ್ನವಾಗಿ, ಡೆಕೋರೇಟರ್ ಪ್ರೋಗ್ರಾಂ ಎಕ್ಸಿಕ್ಯೂಶನ್ ಸಮಯದಲ್ಲಿ ವರ್ತನೆಯನ್ನು ಸೇರಿಸುತ್ತದೆ.

ಅಲಂಕಾರವನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಲು ನಮಗೆ ಅಗತ್ಯವಿದೆ:

  1. ಮೂಲ ಒಂದರಿಂದ ಡೆಕೋರೇಟರ್ ವರ್ಗವನ್ನು ಆನುವಂಶಿಕವಾಗಿ ಪಡೆದುಕೊಳ್ಳಿ.
  2. ಡೆಕೋರೇಟರ್‌ಗೆ ಮೂಲ ವರ್ಗಕ್ಕೆ ಉಲ್ಲೇಖವಿರುವ ಕ್ಷೇತ್ರವನ್ನು ಸೇರಿಸಿ.
  3. ಡೆಕೋರೇಟರ್ ಕನ್‌ಸ್ಟ್ರಕ್ಟರ್‌ಗೆ ಅಲಂಕರಿಸಬೇಕಾದ ವಸ್ತುವಿನ ಉಲ್ಲೇಖವನ್ನು ರವಾನಿಸಿ.
  4. ಡೆಕೋರೇಟರ್‌ನಿಂದ ಅಲಂಕರಿಸಲ್ಪಟ್ಟ ವಸ್ತುವಿಗೆ ಮರುನಿರ್ದೇಶನ ವಿಧಾನಗಳು.
  5. ನೀವು ಬದಲಾಯಿಸಲು ಬಯಸುವ ನಡವಳಿಕೆಯ ಡೆಕೋರೇಟರ್‌ನಲ್ಲಿ ವಿಧಾನಗಳನ್ನು ಅತಿಕ್ರಮಿಸಿ.

ಅದನ್ನು ಹೇಗೆ ಬಳಸುವುದು?


ಒಂದು ನಿರ್ದಿಷ್ಟ ಸನ್ನಿವೇಶದಲ್ಲಿ ನಿರ್ದಿಷ್ಟ ನಡವಳಿಕೆಯನ್ನು ಹೊಂದಿರಬೇಕಾದ ವಸ್ತುವನ್ನು ನಾವು ಹೊಂದಿದ್ದೇವೆ ಎಂದು ಹೇಳೋಣ. ಉದಾಹರಣೆಗೆ, ನಿಮ್ಮ ಖಾತೆಯಿಂದ ಲಾಗ್ ಔಟ್ ಮಾಡಲು ನಾವು HTML ಲಿಂಕ್ ಅನ್ನು ಹೊಂದಿದ್ದೇವೆ ಅದು ನಾವು ಯಾವ ಪುಟದಲ್ಲಿದ್ದೇವೆ ಎಂಬುದರ ಆಧಾರದ ಮೇಲೆ ವಿಭಿನ್ನವಾಗಿ ಗೋಚರಿಸುತ್ತದೆ. ಅಲಂಕಾರಕಾರರು ನಮಗೆ ಸಹಾಯ ಮಾಡುವ ಸಂದರ್ಭ ಇದು.

ಮೊದಲಿಗೆ, ನಮಗೆ ಯಾವ "ದೃಶ್ಯಾವಳಿ" ಬೇಕು ಎಂದು ನಿರ್ಧರಿಸೋಣ:

  • ನಾವು ಮುಖ್ಯ ಪುಟದಲ್ಲಿದ್ದರೆ ಮತ್ತು ಲಾಗ್ ಇನ್ ಆಗಿದ್ದರೆ, ಲಿಂಕ್ h2 ಟ್ಯಾಗ್‌ನಲ್ಲಿರಬೇಕು.
  • ನಾವು ಬೇರೆ ಯಾವುದೇ ಪುಟದಲ್ಲಿದ್ದರೆ ಮತ್ತು ಲಾಗ್ ಇನ್ ಆಗಿದ್ದರೆ, ಲಿಂಕ್ ಅನ್ನು ಅಂಡರ್ಲೈನ್ ​​ಮಾಡಬೇಕು.
  • ನಾವು ಲಾಗ್ ಇನ್ ಆಗಿದ್ದರೆ, ಲಿಂಕ್ ಬಲವಾದ ಟ್ಯಾಗ್‌ನಲ್ಲಿರಬೇಕು.

ಈಗ ನಾವು ಅಲಂಕಾರಿಕರನ್ನು ಸ್ವತಃ ಬರೆಯಬಹುದು:

ವರ್ಗ HtmlLinks(

ಕ್ಲಾಸ್ ಲಾಗ್ಔಟ್ಲಿಂಕ್ ಹೆಚ್ಟಿಎಂಎಲ್ಲಿಂಕ್ಗಳನ್ನು ವಿಸ್ತರಿಸುತ್ತದೆ (

ರಕ್ಷಿತ $_html ;

ಸಾರ್ವಜನಿಕ ಕಾರ್ಯ __ನಿರ್ಮಾಣ() (

$this -> _html = "ಲಾಗ್ಔಟ್" ;

}

ಸಾರ್ವಜನಿಕ ಕಾರ್ಯ setHtml ($html) (

$this -> _html = $html ;

}

ಸಾರ್ವಜನಿಕ ಕಾರ್ಯ ನಿರೂಪಣೆ() (

ಎಕೋ $ಥಿಸ್ -> _html ;

}

ವರ್ಗ LogoutLinkH2Decorator HtmlLinks ಅನ್ನು ವಿಸ್ತರಿಸುತ್ತದೆ (

ಸಂರಕ್ಷಿತ $_logout_link ;

$this -> _logout_link = $logout_link ;

$this -> setHtml ("" . $this -> _html . "");

}

ಸಾರ್ವಜನಿಕ ಕಾರ್ಯ __ಕರೆ ($ಹೆಸರು, $args) (

$this -> _logout_link -> $name ($args [0] ) ;

ಕ್ಲಾಸ್ ಲಾಗ್‌ಔಟ್‌ಲಿಂಕ್ಅಂಡರ್‌ಲೈನ್ ಡೆಕೋರೇಟರ್ ಹೆಚ್‌ಟಿಎಂಎಲ್‌ಲಿಂಕ್‌ಗಳನ್ನು ವಿಸ್ತರಿಸುತ್ತದೆ (

ರಕ್ಷಿತ $_logout_link ;

ಸಾರ್ವಜನಿಕ ಕಾರ್ಯ __ನಿರ್ಮಾಣ ($logout_link) (



ನಾವು ಓದುವುದನ್ನು ಶಿಫಾರಸು ಮಾಡುತ್ತೇವೆ

ಟಾಪ್