Inversion of control
ಸಾಫ್ಟ್ವೇರ್ ಎಂಜಿನಿಯರಿಂಗ್ನಲ್ಲಿ, ಇನ್ವರ್ಷನ್ ಆಫ್ ಕಂಟ್ರೋಲ್ (ಐಒಸಿ) ಒಂದು ವಿನ್ಯಾಸ ಮಾದರಿಯಾಗಿದ್ದು, ಇದರಲ್ಲಿ ಕಂಪ್ಯೂಟರ್ ಪ್ರೋಗ್ರಾಂನ ಕಸ್ಟಮ್-ಲಿಖಿತ ಭಾಗಗಳು ಸಾಮಾನ್ಯ ಚೌಕಟ್ಟಿನಿಂದ ನಿಯಂತ್ರಣದ ಹರಿವನ್ನು ಪಡೆಯುತ್ತವೆ. "ಇನ್ವರ್ಷನ್" ಎಂಬ ಪದವು ಐತಿಹಾಸಿಕವಾಗಿದೆಃ ಕಾರ್ಯವಿಧಾನದ ಪ್ರೋಗ್ರಾಮಿಂಗ್ಗೆ ಹೋಲಿಸಿದರೆ ಈ ವಿನ್ಯಾಸದ "ಇನ್ವರ್ಟ್ಸ್" ನಿಯಂತ್ರಣವನ್ನು ಹೊಂದಿರುವ ಸಾಫ್ಟ್ವೇರ್ ವಾಸ್ತುಶಿಲ್ಪ. ಕಾರ್ಯವಿಧಾನದ ಪ್ರೋಗ್ರಾಮಿಂಗ್ನಲ್ಲಿ, ಸಾಮಾನ್ಯ ಕಾರ್ಯಗಳನ್ನು ನೋಡಿಕೊಳ್ಳಲು ಪ್ರೋಗ್ರಾಂನ ಕಸ್ಟಮ್ ಕೋಡ್ ಮರುಬಳಕೆ ಮಾಡಬಹುದಾದ ಗ್ರಂಥಾಲಯಗಳನ್ನು ಕರೆಯುತ್ತದೆ, ಆದರೆ ನಿಯಂತ್ರಣದ ವಿಲೋಮದೊಂದಿಗೆ, ಇದು ಕಸ್ಟಮ್ ಕೋಡ್ ಅನ್ನು ಕರೆಯುವ ಚೌಕಟ್ಟಾಗಿದೆ. ನಿಯಂತ್ರಣದ ವಿಲೋಮವನ್ನು GUI ಪರಿಸರದ ಉದಯದಿಂದ ಅಪ್ಲಿಕೇಶನ್ ಅಭಿವೃದ್ಧಿ ಚೌಕಟ್ಟುಗಳು ವ್ಯಾಪಕವಾಗಿ ಬಳಸುತ್ತಿವೆ ಮತ್ತು GUI ಪರಿಸರದಲ್ಲಿ ಮತ್ತು ವೆಬ್ ಸರ್ವರ್ ಅಪ್ಲಿಕೇಶನ್ ಚೌಕಟ್ಟುಗಳೆರಡರಲ್ಲೂ ಬಳಸಲಾಗುತ್ತಿದೆ. ನಿಯಂತ್ರಣದ ವಿಲೋಮವು ಅಪ್ಲಿಕೇಶನ್ ಪ್ರೋಗ್ರಾಮರ್ ವ್ಯಾಖ್ಯಾನಿಸಿದ ವಿಧಾನಗಳಿಂದ ಚೌಕಟ್ಟನ್ನು ವಿಸ್ತರಿಸುವಂತೆ ಮಾಡುತ್ತದೆ. ಈವೆಂಟ್-ಚಾಲಿತ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಅನ್ನು ಸಾಮಾನ್ಯವಾಗಿ ಐಒಸಿ ಬಳಸಿ ಕಾರ್ಯಗತಗೊಳಿಸಲಾಗುತ್ತದೆ, ಇದರಿಂದಾಗಿ ಕಸ್ಟಮ್ ಕೋಡ್ ಈವೆಂಟ್ಗಳ ನಿರ್ವಹಣೆಗೆ ಮಾತ್ರ ಸಂಬಂಧಿಸಿರುತ್ತದೆ, ಆದರೆ ಈವೆಂಟ್ ಲೂಪ್ ಮತ್ತು ಈವೆಂಟ್ಗಳು/ಸಂದೇಶಗಳ ರವಾನೆಯನ್ನು ಫ್ರೇಮ್ವರ್ಕ್ ಅಥವಾ ರನ್ಟೈಮ್ ಪರಿಸರದಿಂದ ನಿರ್ವಹಿಸಲಾಗುತ್ತದೆ. ವೆಬ್ ಸರ್ವರ್ ಅಪ್ಲಿಕೇಶನ್ ಚೌಕಟ್ಟುಗಳಲ್ಲಿ, ರವಾನೆಯನ್ನು ಸಾಮಾನ್ಯವಾಗಿ ರೂಟಿಂಗ್ ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ, ಮತ್ತು ಹ್ಯಾಂಡ್ಲರ್ಗಳನ್ನು ಎಂಡ್ ಪಾಯಿಂಟ್ಗಳು ಎಂದು ಕರೆಯಬಹುದು. ಸ್ಪ್ರಿಂಗ್ ಫ್ರೇಮ್ವರ್ಕ್ನಂತಹ ಜಾವಾ ಚೌಕಟ್ಟುಗಳಲ್ಲಿ "ಐಒಸಿ ಧಾರಕಗಳೊಂದಿಗೆ" ಸಂಭವಿಸುವ ವಸ್ತುಗಳ ಅವಲಂಬನೆಗಳನ್ನು ಚುಚ್ಚುಮದ್ದು ಮಾಡುವ ಮಾದರಿಗಳನ್ನು ನಿರ್ದಿಷ್ಟವಾಗಿ ಉಲ್ಲೇಖಿಸಲು ಜಾವಾ ಪ್ರೋಗ್ರಾಮರ್ಗಳ ಸಮುದಾಯದಲ್ಲಿ "ಇನ್ವರ್ಷನ್ ಆಫ್ ಕಂಟ್ರೋಲ್" ಎಂಬ ಪದಗುಚ್ಛವನ್ನು ಪ್ರತ್ಯೇಕವಾಗಿ ಬಳಸಲಾಗುತ್ತಿದೆ. ಈ ವಿಭಿನ್ನ ಅರ್ಥದಲ್ಲಿ, "ಇನ್ವರ್ಷನ್ ಆಫ್ ಕಂಟ್ರೋಲ್" ಎಂದರೆ ಫ್ರೇಮ್ವರ್ಕ್ ನಿಯಂತ್ರಣ ಹರಿವನ್ನು ನೀಡುವ ಮೂಲ ಅರ್ಥಕ್ಕಿಂತ ಹೆಚ್ಚಾಗಿ ಅಪ್ಲಿಕೇಶನ್ ಆಬ್ಜೆಕ್ಟ್ಗಳು ಬಳಸುವ ಅವಲಂಬನೆಗಳ ಅನುಷ್ಠಾನದ ಮೇಲೆ ಫ್ರೇಮ್ವರ್ಕ್ ನಿಯಂತ್ರಣವನ್ನು ನೀಡುವುದು (ಅಪ್ಲಿಕೇಶನ್ ಕೋಡ್ ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುವ ಸಮಯದ ಮೇಲೆ ನಿಯಂತ್ರಣ, ಉದಾಹರಣೆಗೆ. ಕರೆಗಳು). ಒಂದು ಉದಾಹರಣೆಯಾಗಿ, ಸಾಂಪ್ರದಾಯಿಕ ಪ್ರೊಗ್ರಾಮಿಂಗ್ನೊಂದಿಗೆ, ಅಪ್ಲಿಕೇಶನ್ನ ಮುಖ್ಯ ಕಾರ್ಯವು ಲಭ್ಯವಿರುವ ಆಜ್ಞೆಗಳ ಪಟ್ಟಿಯನ್ನು ಪ್ರದರ್ಶಿಸಲು ಮತ್ತು ಒಂದನ್ನು ಆಯ್ಕೆ ಮಾಡಲು ಬಳಕೆದಾರರನ್ನು ಪ್ರಶ್ನಿಸಲು ಮೆನು ಲೈಬ್ರರಿಗೆ ಫಂಕ್ಷನ್ ಕರೆಗಳನ್ನು ಮಾಡಬಹುದು. ಲೈಬ್ರರಿಯು ಆಯ್ಕೆ ಮಾಡಿದ ಆಯ್ಕೆಯನ್ನು ಫಂಕ್ಷನ್ ಕರೆಯ ಮೌಲ್ಯವಾಗಿ ಹಿಂದಿರುಗಿಸುತ್ತದೆ ಮತ್ತು ಮುಖ್ಯ ಕಾರ್ಯವು ಈ ಮೌಲ್ಯವನ್ನು ಸಂಬಂಧಿತ ಆಜ್ಞೆಯನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಲು ಬಳಸುತ್ತದೆ. ಈ ಶೈಲಿಯು ಪಠ್ಯ ಆಧಾರಿತ ಇಂಟರ್ಫೇಸ್ಗಳಲ್ಲಿ ಸಾಮಾನ್ಯವಾಗಿತ್ತು. ಉದಾಹರಣೆಗೆ, ಇಮೇಲ್ ಕ್ಲೈಂಟ್ ಹೊಸ ಮೇಲ್ ಅನ್ನು ಲೋಡ್ ಮಾಡಲು, ಪ್ರಸ್ತುತ ಮೇಲ್ಗೆ ಉತ್ತರಿಸಲು, ಹೊಸ ಮೇಲ್ ಅನ್ನು ರಚಿಸಲು ಇತ್ಯಾದಿ ಆಜ್ಞೆಗಳೊಂದಿಗೆ ಪರದೆಯನ್ನು ತೋರಿಸಬಹುದು ಮತ್ತು ಬಳಕೆದಾರರು ಆಜ್ಞೆಯನ್ನು ಆಯ್ಕೆ ಮಾಡಲು ಕೀಲಿಯನ್ನು ಒತ್ತುವವರೆಗೆ ಪ್ರೋಗ್ರಾಂ ಕಾರ್ಯಗತಗೊಳಿಸುವಿಕೆಯು ನಿರ್ಬಂಧಿಸುತ್ತದೆ. ಮತ್ತೊಂದೆಡೆ, ನಿಯಂತ್ರಣದ ವಿಲೋಮದೊಂದಿಗೆ, ವಿಂಡೋಯಿಂಗ್ ವ್ಯವಸ್ಥೆಗಳು, ಮೆನುಗಳು, ಮೌಸ್ ಅನ್ನು ನಿಯಂತ್ರಿಸುವುದು ಮುಂತಾದ ಸಾಮಾನ್ಯ ನಡವಳಿಕೆಯ ಮತ್ತು ಚಿತ್ರಾತ್ಮಕ ಅಂಶಗಳನ್ನು ತಿಳಿದಿರುವ ಸಾಫ್ಟ್ವೇರ್ ಚೌಕಟ್ಟನ್ನು ಬಳಸಿಕೊಂಡು ಪ್ರೋಗ್ರಾಂ ಅನ್ನು ಬರೆಯಲಾಗುತ್ತದೆ. ಕಸ್ಟಮ್ ಕೋಡ್ ಚೌಕಟ್ಟಿನ "ಖಾಲಿ ಜಾಗಗಳನ್ನು ತುಂಬುತ್ತದೆ", ಉದಾಹರಣೆಗೆ ಮೆನು ಐಟಂಗಳ ಟೇಬಲ್ ಅನ್ನು ಪೂರೈಸುವುದು ಮತ್ತು ಪ್ರತಿ ಐಟಂಗೆ ಕೋಡ್ ಸಬ್ರುಟೈನ್ ಅನ್ನು ನೋಂದಾಯಿಸುವುದು, ಆದರೆ ಇದು ಬಳಕೆದಾರರ ಕ್ರಿಯೆಗಳನ್ನು ಮೇಲ್ವಿಚಾರಣೆ ಮಾಡುವ ಚೌಕಟ್ಟಾಗಿದೆ ಮತ್ತು ಮೆನು ಐಟಂ ಅನ್ನು ಆಯ್ಕೆ ಮಾಡಿದಾಗ ಸಬ್ರುಟೈನ್ ಅನ್ನು ಆಹ್ವಾನಿಸುತ್ತದೆ. ಮೇಲ್ ಕ್ಲೈಂಟ್ ಉದಾಹರಣೆಯಲ್ಲಿ, ಚೌಕಟ್ಟು ಕೀಬೋರ್ಡ್ ಮತ್ತು ಮೌಸ್ ಇನ್ಪುಟ್ಗಳೆರಡನ್ನೂ ಅನುಸರಿಸಬಹುದು ಮತ್ತು ಎರಡೂ ವಿಧಾನಗಳಿಂದ ಬಳಕೆದಾರರು ಆಹ್ವಾನಿಸಿದ ಆಜ್ಞೆಯನ್ನು ಕರೆಯಬಹುದು, ಮತ್ತು ಅದೇ ಸಮಯದಲ್ಲಿ ಹೊಸ ಸಂದೇಶಗಳು ಬರುತ್ತವೆಯೇ ಎಂದು ಕಂಡುಹಿಡಿಯಲು ನೆಟ್ವರ್ಕ್ ಇಂಟರ್ಫೇಸ್ ಅನ್ನು ಮೇಲ್ವಿಚಾರಣೆ ಮಾಡಬಹುದು ಮತ್ತು ಕೆಲವು ನೆಟ್ವರ್ಕ್ ಚಟುವಟಿಕೆ ಪತ್ತೆಯಾದಾಗ ಪರದೆಯನ್ನು ರಿಫ್ರೆಶ್ ಮಾಡಬಹುದು. ಅದೇ ಚೌಕಟ್ಟನ್ನು ಸ್ಪ್ರೆಡ್ಶೀಟ್ ಪ್ರೋಗ್ರಾಂ ಅಥವಾ ಟೆಕ್ಸ್ಟ್ ಎಡಿಟರ್ಗೆ ಅಸ್ಥಿಪಂಜರವಾಗಿ ಬಳಸಬಹುದು. ಇದಕ್ಕೆ ವಿರುದ್ಧವಾಗಿ, ಚೌಕಟ್ಟಿಗೆ ವೆಬ್ ಬ್ರೌಸರ್ಗಳು, ಸ್ಪ್ರೆಡ್ಶೀಟ್ಗಳು ಅಥವಾ ಪಠ್ಯ ಸಂಪಾದಕರ ಬಗ್ಗೆ ಏನೂ ತಿಳಿದಿಲ್ಲ; ಅವುಗಳ ಕಾರ್ಯವನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಲು ಕಸ್ಟಮ್ ಕೋಡ್ ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ. ನಿಯಂತ್ರಣದ ವಿಲೋಮವು ಮರುಬಳಕೆ ಮಾಡಬಹುದಾದ ಕೋಡ್ ಮತ್ತು ಸಮಸ್ಯೆ-ನಿರ್ದಿಷ್ಟ ಕೋಡ್ಗಳು ಅಪ್ಲಿಕೇಶನ್ನಲ್ಲಿ ಒಟ್ಟಿಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತಿದ್ದರೂ ಸಹ ಸ್ವತಂತ್ರವಾಗಿ ಅಭಿವೃದ್ಧಿಪಡಿಸಲಾಗಿದೆ ಎಂಬ ಬಲವಾದ ಅರ್ಥವನ್ನು ಹೊಂದಿದೆ. ಕಾಲ್ಬ್ಯಾಕ್ಗಳು, ವೇಳಾಪಟ್ಟಿಗಳು, ಈವೆಂಟ್ ಲೂಪ್ಗಳು ಮತ್ತು ಟೆಂಪ್ಲೇಟ್ ವಿಧಾನಗಳು ನಿಯಂತ್ರಣ ತತ್ವದ ವಿಲೋಮವನ್ನು ಅನುಸರಿಸುವ ವಿನ್ಯಾಸ ಮಾದರಿಗಳ ಉದಾಹರಣೆಗಳಾಗಿವೆ, ಆದಾಗ್ಯೂ ಈ ಪದವನ್ನು ಸಾಮಾನ್ಯವಾಗಿ ಆಬ್ಜೆಕ್ಟ್-ಓರಿಯೆಂಟೆಡ್ ಪ್ರೋಗ್ರಾಮಿಂಗ್ನ ಸಂದರ್ಭದಲ್ಲಿ ಬಳಸಲಾಗುತ್ತದೆ. (ಡಿಪೆಂಡೆನ್ಸಿ ಇಂಜೆಕ್ಷನ್ ಎಂಬುದು ಜಾವಾ ಚೌಕಟ್ಟುಗಳಿಂದ ಜನಪ್ರಿಯಗೊಳಿಸಲ್ಪಟ್ಟ "ಡಿಪೆಂಡೆನ್ಸಿಗಳ ಅನುಷ್ಠಾನದ ಮೇಲೆ ನಿಯಂತ್ರಣವನ್ನು ತಿರುಗಿಸುವ" ಪ್ರತ್ಯೇಕ, ನಿರ್ದಿಷ್ಟ ಕಲ್ಪನೆಗೆ ಒಂದು ಉದಾಹರಣೆಯಾಗಿದೆ.) ನಿಯಂತ್ರಣದ ವಿಲೋಮವನ್ನು ಕೆಲವೊಮ್ಮೆ "ಹಾಲಿವುಡ್ ತತ್ವಃ ನಮಗೆ ಕರೆ ಮಾಡಬೇಡಿ, ನಾವು ನಿಮ್ಮನ್ನು ಕರೆಯುತ್ತೇವೆ" ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ. ಬ್ಯಾಕ್ಗ್ರೌಂಡ್ ಇನ್ವರ್ಷನ್ ಆಫ್ ಕಂಟ್ರೋಲ್ ಎಂಬುದು ಕಂಪ್ಯೂಟರ್ ವಿಜ್ಞಾನದಲ್ಲಿ ಹೊಸ ಪದವಲ್ಲ. ಮಾರ್ಟಿನ್ ಫೌಲರ್ ಈ ಪದಗುಚ್ಛದ ವ್ಯುತ್ಪತ್ತಿಯನ್ನು 1988ರಲ್ಲಿ ಪತ್ತೆಹಚ್ಚಿದ್ದಾರೆ, ಆದರೆ ಇದು 1970ರ ದಶಕದಲ್ಲಿ ಮೈಕೆಲ್ ಜಾಕ್ಸನ್ ತನ್ನ ಜಾಕ್ಸನ್ ಸ್ಟ್ರಕ್ಚರ್ಡ್ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಮೆಥಡಾಲಜಿಯಲ್ಲಿ ವಿವರಿಸಿದ ಪ್ರೋಗ್ರಾಂ ಇನ್ವರ್ಷನ್ ಪರಿಕಲ್ಪನೆಗೆ ನಿಕಟ ಸಂಬಂಧ ಹೊಂದಿದೆ. ಬಾಟಮ್-ಅಪ್ ಪಾರ್ಸರ್ ಅನ್ನು ಟಾಪ್-ಡೌನ್ ಪಾರ್ಸರ್ನ ವಿಲೋಮವಾಗಿ ಕಾಣಬಹುದುಃ ಒಂದು ಸಂದರ್ಭದಲ್ಲಿ, ನಿಯಂತ್ರಣವು ಪಾರ್ಸರ್ನೊಂದಿಗೆ ಇರುತ್ತದೆ, ಇನ್ನೊಂದು ಸಂದರ್ಭದಲ್ಲಿ, ಇದು ಸ್ವೀಕರಿಸುವ ಅಪ್ಲಿಕೇಶನ್ನೊಂದಿಗೆ ಇರುತ್ತದೆ. ಈ ಪದವನ್ನು ಮೈಕೆಲ್ ಮ್ಯಾಟ್ಸನ್ ಅವರು ಪ್ರಬಂಧವೊಂದರಲ್ಲಿ ಬಳಸಿದ್ದಾರೆ (ಅಪ್ಲಿಕೇಶನ್ ಕೋಡ್ ಅನ್ನು ಕರೆಯುವ ಚೌಕಟ್ಟಿನ ಅದರ ಮೂಲ ಅರ್ಥದೊಂದಿಗೆ), ಮತ್ತು ನಂತರ ಅಲ್ಲಿಂದ ಸ್ಟೆಫಾನೊ ಮ್ಯಾಝೋಚಿ ಅವರು ತೆಗೆದುಕೊಂಡರು ಮತ್ತು 1999 ರಲ್ಲಿ ನಿಷ್ಕ್ರಿಯವಾದ ಅಪಾಚೆ ಸಾಫ್ಟ್ವೇರ್ ಫೌಂಡೇಶನ್ ಯೋಜನೆಯಲ್ಲಿ ಜನಪ್ರಿಯಗೊಳಿಸಿದರು, ಅವಲಾನ್, ಇದರಲ್ಲಿ ಇದು ಮರಣದಂಡನೆಯ ಹರಿವನ್ನು ನಿಯಂತ್ರಿಸುವುದರ ಜೊತೆಗೆ ಮಗುವಿನ ವಸ್ತುವಿನ ಅವಲಂಬನೆಗಳಲ್ಲಿ ಹಾದುಹೋಗುವ ಮೂಲ ವಸ್ತುವನ್ನು ಉಲ್ಲೇಖಿಸುತ್ತದೆ. ಈ ಪದವನ್ನು 2004 ರಲ್ಲಿ ರಾಬರ್ಟ್ ಸಿ. ಮಾರ್ಟಿನ್ ಮತ್ತು ಮಾರ್ಟಿನ್ ಫೌಲರ್ ಅವರು ಮತ್ತಷ್ಟು ಜನಪ್ರಿಯಗೊಳಿಸಿದರು, ಅವರಲ್ಲಿ ಎರಡನೆಯವರು ಈ ಪದದ ಮೂಲವನ್ನು 1980 ರ ದಶಕದಲ್ಲಿ ಗುರುತಿಸಿದ್ದಾರೆ. ಸಾಂಪ್ರದಾಯಿಕ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ನಲ್ಲಿ, ವ್ಯವಹಾರ ತರ್ಕದ ಹರಿವನ್ನು ಒಂದಕ್ಕೊಂದು ಸ್ಥಿರವಾಗಿ ಬಂಧಿಸಲಾದ ವಸ್ತುಗಳಿಂದ ನಿರ್ಧರಿಸಲಾಗುತ್ತದೆ. ನಿಯಂತ್ರಣದ ವಿಲೋಮದೊಂದಿಗೆ, ಹರಿವು ಪ್ರೋಗ್ರಾಂ ಕಾರ್ಯಗತಗೊಳಿಸುವ ಸಮಯದಲ್ಲಿ ನಿರ್ಮಿಸಲಾದ ಆಬ್ಜೆಕ್ಟ್ ಗ್ರಾಫ್ ಅನ್ನು ಅವಲಂಬಿಸಿರುತ್ತದೆ. ಅಮೂರ್ತತೆಗಳ ಮೂಲಕ ವ್ಯಾಖ್ಯಾನಿಸಲಾದ ವಸ್ತುವಿನ ಪರಸ್ಪರ ಕ್ರಿಯೆಗಳಿಂದ ಅಂತಹ ಕ್ರಿಯಾತ್ಮಕ ಹರಿವು ಸಾಧ್ಯವಾಗಿದೆ. ಈ ರನ್-ಟೈಮ್ ಬೈಂಡಿಂಗ್ ಅನ್ನು ಡಿಪೆಂಡೆನ್ಸಿ ಇಂಜೆಕ್ಷನ್ ಅಥವಾ ಸರ್ವೀಸ್ ಲೊಕೇಟರ್ನಂತಹ ಕಾರ್ಯವಿಧಾನಗಳಿಂದ ಸಾಧಿಸಲಾಗುತ್ತದೆ. ಐಒಸಿಯಲ್ಲಿ, ಕೋಡ್ ಅನ್ನು ಸಂಕಲನದ ಸಮಯದಲ್ಲಿ ಸ್ಥಿರವಾಗಿ ಲಿಂಕ್ ಮಾಡಬಹುದು, ಆದರೆ ಕೋಡ್ನಲ್ಲಿ ನೇರ ಉಲ್ಲೇಖದ ಬದಲು ಬಾಹ್ಯ ಸಂರಚನೆಯಿಂದ ಅದರ ವಿವರಣೆಯನ್ನು ಓದುವ ಮೂಲಕ ಕಾರ್ಯಗತಗೊಳಿಸಲು ಕೋಡ್ ಅನ್ನು ಕಂಡುಹಿಡಿಯಬಹುದು. ಡಿಪೆಂಡೆನ್ಸಿ ಇಂಜೆಕ್ಷನ್ನಲ್ಲಿ, ಅವಲಂಬಿತ ವಸ್ತು ಅಥವಾ ಮಾಡ್ಯೂಲ್ ಅನ್ನು ರನ್ ಸಮಯದಲ್ಲಿ ಅಗತ್ಯವಿರುವ ವಸ್ತುವಿಗೆ ಜೋಡಿಸಲಾಗುತ್ತದೆ. ಪ್ರೋಗ್ರಾಂ ಕಾರ್ಯಗತಗೊಳಿಸುವ ಸಮಯದಲ್ಲಿ ಯಾವ ನಿರ್ದಿಷ್ಟ ವಸ್ತುವು ಅವಲಂಬನೆಯನ್ನು ತೃಪ್ತಿಪಡಿಸುತ್ತದೆ ಎಂಬುದನ್ನು ಸಾಮಾನ್ಯವಾಗಿ ಸ್ಥಿರ ವಿಶ್ಲೇಷಣೆಯನ್ನು ಬಳಸಿಕೊಂಡು ಕಂಪೈಲ್ ಸಮಯದಲ್ಲಿ ತಿಳಿಯಲು ಸಾಧ್ಯವಿಲ್ಲ. ಇಲ್ಲಿ ಆಬ್ಜೆಕ್ಟ್ ಇಂಟರಾಕ್ಷನ್ ವಿಷಯದಲ್ಲಿ ವಿವರಿಸಲಾಗಿದ್ದರೂ, ಈ ತತ್ವವು ಆಬ್ಜೆಕ್ಟ್-ಓರಿಯೆಂಟೆಡ್ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಜೊತೆಗೆ ಇತರ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ವಿಧಾನಗಳಿಗೆ ಅನ್ವಯಿಸಬಹುದು. ಚಾಲನೆಯಲ್ಲಿರುವ ಪ್ರೋಗ್ರಾಂ ವಸ್ತುಗಳನ್ನು ಪರಸ್ಪರ ಬಂಧಿಸಲು, ವಸ್ತುಗಳು ಹೊಂದಾಣಿಕೆಯ ಇಂಟರ್ಫೇಸ್ಗಳನ್ನು ಹೊಂದಿರಬೇಕು. ಉದಾಹರಣೆಗೆ, ವರ್ಗ ಎ ಇಂಟರ್ಫೇಸ್ I ಗೆ ನಡವಳಿಕೆಯನ್ನು ನಿಯೋಜಿಸಬಹುದು, ಇದು ವರ್ಗ ಬಿ ಯಿಂದ ಕಾರ್ಯಗತಗೊಳ್ಳುತ್ತದೆ; ಪ್ರೋಗ್ರಾಂ ಎ ಮತ್ತು ಬಿ ಅನ್ನು ತ್ವರಿತಗೊಳಿಸುತ್ತದೆ, ಮತ್ತು ನಂತರ ಬಿ ಅನ್ನು ಎ ಗೆ ಚುಚ್ಚುತ್ತದೆ. ಎಕ್ಸ್ಡಿಇ, 1985 ವಿಷುಯಲ್ ಬೇಸಿಕ್ (ಕ್ಲಾಸಿಕ್), 1991 ಗಾಗಿ ಮೆಸಾ ಪ್ರೊಗ್ರಾಮಿಂಗ್ ಪರಿಸರವನ್ನು ಬಳಸಿ. ಎಚ್. ಟಿ. ಎಂ. ಎಲ್. ಡಿ. ಓ. ಎಂ. ಈವೆಂಟ್ ಸ್ಪ್ರಿಂಗ್ ಫ್ರೇಮ್ವರ್ಕ್ <ಐ. ಡಿ. 1> ಕೋರ್ ಟೆಂಪ್ಲೇಟ್ ವಿಧಾನದ ಮಾದರಿ ಉದಾಹರಣೆ ಕೋಡ್ ಎಚ್. ಟಿ. ಎಂ. ಎಲ್. ಡಿ. ಓ. ಎಂ. ಘಟನೆಗಳು ವೆಬ್ ಬ್ರೌಸರ್ಗಳು ಎಚ್. ಟಿ. ಎಂ. ಎಲ್. ನಲ್ಲಿ ಡಿ. ಓ. ಎಂ. ಘಟನೆಗಳಿಗೆ ಇನ್ವರ್ಷನ್ ಆಫ್ ಕಂಟ್ರೋಲ್ ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುತ್ತವೆ. ಅಪ್ಲಿಕೇಶನ್ ಡೆವಲಪರ್ ಕಾಲ್ಬ್ಯಾಕ್ ಅನ್ನು ನೋಂದಾಯಿಸಲು ಬಳಸುತ್ತಾರೆ. <! ಡಾಕ್ಟೈಪ್ ಎಚ್. ಟಿ. ಎಂ. ಎಲ್> <ಎಚ್. ಟಿ. ಎಂ. ಎಲ್ ಲ್ಯಾಂಗ್ = "ಎನ್"> <ಹೆಡ್> <ಮೆಟಾ ಅಕ್ಷರಮಾಲೆ = "ಯು. ಟಿ. ಎಫ್-8"> <ಶೀರ್ಷಿಕೆ> ಡಿ. ಓ. ಎಂ ಮಟ್ಟ 2 </ಶೀರ್ಷಿಕೆ> <ತಲೆ> <ದೇಹ> <ಎಚ್1> ಡಿ. ಓ. ಎಂ ಮಟ್ಟ 2 ಈವೆಂಟ್ ಹ್ಯಾಂಡ್ಲರ್ </ಎಚ್1> <ಪಿ> <ದೊಡ್ಡ> <ಸ್ಪ್ಯಾನ್ ಐಡಿ = "ಔಟ್ಪುಟ್"> </ಸ್ಪ್ಯಾನ್> </ದೊಡ್ಡ> </ಪಿ> <ಸ್ಕ್ರಿಪ್ಟ್> ವರ್ ರಿಜಿಸ್ಟರ್ಡ್ ಲಿಸ್ಟನರ್ = ಫಂಕ್ಷನ್ () {document.getElementById (ಔಟ್ಪುಟ್). ಇನ್ನರ್ ಎಚ್. ಟಿ. ಎಂ. ಎಲ್ = "<ದೊಡ್ಡ> ನೋಂದಾಯಿತ ಕೇಳುಗನನ್ನು ಕರೆಯಲಾಯಿತು. ನೀವು ಪುಟವನ್ನು ಕ್ಲಿಕ್ ಮಾಡಿದರೆ, ನಿಮ್ಮ ವೆಬ್ ಬ್ರೌಸರ್ ಈವೆಂಟ್ ಹ್ಯಾಂಡ್ಲರ್ಗೆ ಕರೆ ಮಾಡುತ್ತದೆ. </ದೊಡ್ಡ> "</ಸ್ಕ್ರಿಪ್ಟ್> </ಬಾಡಿ> </ಎಚ್ಟಿಎಮ್ಎಲ್> ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ ಚೌಕಟ್ಟುಗಳು Asp.NetCore ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ಗೆ ಈ ಉದಾಹರಣೆಯ ಕೋಡ್ ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ ಹೋಸ್ಟ್ ಅನ್ನು ರಚಿಸುತ್ತದೆ, ಎಂಡ್ ಪಾಯಿಂಟ್ ಅನ್ನು ನೋಂದಾಯಿಸುತ್ತದೆ ಮತ್ತು ನಂತರ ನಿಯಂತ್ರಣವನ್ನು ಫ್ರೇಮ್ವರ್ಕ್ಗೆ ರವಾನಿಸುತ್ತದೆಃ ವರ್ ಬಿಲ್ಡರ್ = WebApplication.CreateBuilder (ಆರ್ಗ್ಸ್); ವರ್ ಅಪ್ಲಿಕೇಶನ್ = builder.Build (); app.MapGet (", ") =" ಹಲೋ ವರ್ಲ್ಡ್! "); app.Run (); ಅಬ್ಸ್ಟ್ರಾಕ್ಷನ್ ಲೇಯರ್ ಆರ್ಕೆಟೈಪ್ ಪ್ಯಾಟರ್ನ್ ಅಸಿಂಕ್ರೋನಸ್ I/O ಆಸ್ಪೆಕ್ಟ್-ಓರಿಯೆಂಟೆಡ್ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಕಾಲ್ಬ್ಯಾಕ್ (ಕಂಪ್ಯೂಟರ್ ಸೈನ್ಸ್) ಕ್ಲೋಸರ್ (ಕಂಪ್ಯೂಟರ್ ಸೈನ್ಸ್) ಕಂಟಿನ್ಯೂಯೇಷನ್ ಡೆಲಿಗೇಟ್ (ಸಿಎಲ್ಐ) ಡಿಪೆಂಡೆನ್ಸಿ ಇನ್ವರ್ಷನ್ ಪ್ರಿನ್ಸಿಪಲ್ ಫ್ಲೋ-ಬೇಸ್ಡ್ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಇಂಪ್ಲಿಸಿಟ್ ಇನ್ವೊಕೇಷನ್ ಇಂಟರಪ್ಟ್ ಹ್ಯಾಂಡ್ಲರ್ ಮೆಸೇಜ್ ಪಾಸಿಂಗ್ ಮೊನಾಡ್ (ಫಂಕ್ಷನಲ್ ಪ್ರೋಗ್ರಾಮಿಂಗ್) ಅಬ್ಸರ್ವರ್ ಪ್ಯಾಟರ್ನ್ ಪಬ್ಲಿಷ್/ಸಬ್ಸ್ಕ್ರೈಬ್ ಸರ್ವೀಸ್ ಲೊಕೇಟರ್ ಪ್ಯಾಟರ್ನ್ ಸಿಗ್ನಲ್ (ಕಂಪ್ಯೂಟಿಂಗ್) ಸಾಫ್ಟ್ವೇರ್ ಫ್ರೇಮ್ವರ್ಕ್ ಸ್ಟ್ರಾಟಜಿ ಪ್ಯಾಟರ್ನ್ ಬಳಕೆದಾರ ನಿರ್ಗಮನ ಸಂದರ್ಶಕ ಪ್ಯಾಟರ್ನ್ ಎಕ್ಸ್ಎಸ್ಎಲ್ಟಿ ಉಲ್ಲೇಖಗಳು ಬಾಹ್ಯ ಕೊಂಡಿಗಳು ನಿಯಂತ್ರಣ ವಿವರಣೆ ಮತ್ತು ಅನುಷ್ಠಾನದ ವಿಲೋಮ ಉದಾಹರಣೆ ಇನ್ವರ್ಷನ್ ಆಫ್ ಕಂಟ್ರೋಲ್ ಸಾಫ್ಟ್ವೇರ್ ಆರ್ಕಿಟೆಕ್ಚರ್ ಆರ್ಕಿಟೆಕ್ಚರಲ್ ಪ್ಯಾಟರ್ನ್ (ಕಂಪ್ಯೂಟರ್ ಸೈನ್ಸ್) ಜಾವಾ (ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆ) ಪ್ರೋಗ್ರಾಮಿಂಗ್ ತತ್ವಗಳು