Dependency inversion principle
ಆಬ್ಜೆಕ್ಟ್-ಓರಿಯೆಂಟೆಡ್ ವಿನ್ಯಾಸದಲ್ಲಿ, ಡಿಪೆಂಡೆನ್ಸಿ ಇನ್ವರ್ಷನ್ ತತ್ವವು ಸಡಿಲವಾಗಿ ಜೋಡಿಸಲಾದ ಸಾಫ್ಟ್ವೇರ್ ಮಾಡ್ಯೂಲ್ಗಳಿಗೆ ಒಂದು ನಿರ್ದಿಷ್ಟ ವಿಧಾನವಾಗಿದೆ. ಈ ತತ್ವವನ್ನು ಅನುಸರಿಸುವಾಗ, ಉನ್ನತ ಮಟ್ಟದ, ನೀತಿ-ಸೆಟ್ಟಿಂಗ್ ಮಾಡ್ಯೂಲ್ಗಳಿಂದ ಕೆಳಮಟ್ಟದ, ಅವಲಂಬನೆ ಮಾಡ್ಯೂಲ್ಗಳವರೆಗೆ ಸ್ಥಾಪಿಸಲಾದ ಸಾಂಪ್ರದಾಯಿಕ ಅವಲಂಬನೆ ಸಂಬಂಧಗಳನ್ನು ಹಿಮ್ಮುಖಗೊಳಿಸಲಾಗುತ್ತದೆ, ಹೀಗಾಗಿ ಉನ್ನತ ಮಟ್ಟದ ಮಾಡ್ಯೂಲ್ಗಳನ್ನು ಕೆಳಮಟ್ಟದ ಮಾಡ್ಯೂಲ್ ಅನುಷ್ಠಾನ ವಿವರಗಳಿಂದ ಸ್ವತಂತ್ರವಾಗಿಸುತ್ತದೆ. ತತ್ವವು ಹೀಗೆ ಹೇಳುತ್ತದೆಃ ಉನ್ನತ-ಮಟ್ಟದ ಮತ್ತು ಕೆಳ-ಮಟ್ಟದ ವಸ್ತುಗಳು ಒಂದೇ ಅಮೂರ್ತತೆಯ ಮೇಲೆ ಅವಲಂಬಿತವಾಗಿರಬೇಕು ಎಂದು ನಿರ್ದೇಶಿಸುವ ಮೂಲಕ, ಈ ವಿನ್ಯಾಸ ತತ್ವವು ಕೆಲವು ಜನರು ವಸ್ತು-ಆಧಾರಿತ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಬಗ್ಗೆ ಯೋಚಿಸುವ ವಿಧಾನವಾಗಿದೆ. ಈ ತತ್ವದ ಎ ಮತ್ತು ಬಿ ಅಂಶಗಳ ಹಿಂದಿನ ಕಲ್ಪನೆಯೆಂದರೆ, ಉನ್ನತ ಮಟ್ಟದ ಘಟಕ ಮತ್ತು ಕೆಳಮಟ್ಟದ ಘಟಕಗಳ ನಡುವಿನ ಪರಸ್ಪರ ಕ್ರಿಯೆಯನ್ನು ವಿನ್ಯಾಸಗೊಳಿಸುವಾಗ, ಪರಸ್ಪರ ಕ್ರಿಯೆಯನ್ನು ಅವುಗಳ ನಡುವಿನ ಅಮೂರ್ತ ಸಂವಹನವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಇದು ಉನ್ನತ ಮಟ್ಟದ ಮಾಡ್ಯೂಲ್ನ ವಿನ್ಯಾಸದ ಮೇಲೆ ಮಾತ್ರವಲ್ಲ, ಕೆಳಮಟ್ಟದ ಮಾಡ್ಯೂಲಿನ ಮೇಲೂ ಪರಿಣಾಮ ಬೀರುತ್ತದೆಃ ಕೆಳಮಟ್ಟದ ಒಂದನ್ನು ಪರಸ್ಪರ ಸಂವಹನವನ್ನು ಗಮನದಲ್ಲಿಟ್ಟುಕೊಂಡು ವಿನ್ಯಾಸಗೊಳಿಸಬೇಕು ಮತ್ತು ಅದರ ಬಳಕೆಯ ಇಂಟರ್ಫೇಸ್ ಅನ್ನು ಬದಲಾಯಿಸುವುದು ಅಗತ್ಯವಾಗಬಹುದು. ಅನೇಕ ಸಂದರ್ಭಗಳಲ್ಲಿ, ಪರಸ್ಪರ ಕ್ರಿಯೆಯ ಬಗ್ಗೆ ಸ್ವತಃ ಒಂದು ಅಮೂರ್ತ ಪರಿಕಲ್ಪನೆಯಾಗಿ ಯೋಚಿಸುವುದರಿಂದ ಹೆಚ್ಚುವರಿ ಕೋಡಿಂಗ್ ಮಾದರಿಗಳನ್ನು ಪರಿಚಯಿಸದೆ ಘಟಕಗಳ ಜೋಡಣೆಯನ್ನು ಕಡಿಮೆ ಮಾಡಲು ಅನುವು ಮಾಡಿಕೊಡುತ್ತದೆ, ಇದು ಹಗುರವಾದ ಮತ್ತು ಕಡಿಮೆ ಅನುಷ್ಠಾನ-ಅವಲಂಬಿತ ಸಂವಹನ ಸ್ಕೀಮಾವನ್ನು ಮಾತ್ರ ಅನುಮತಿಸುತ್ತದೆ. ಎರಡು ಮಾಡ್ಯೂಲ್ಗಳ ನಡುವೆ ಪತ್ತೆಯಾದ ಅಬ್ಸ್ಟ್ರಾಕ್ಟ್ ಇಂಟರಾಕ್ಷನ್ ಸ್ಕೀಮಾ (ಗಳು) ಸಾಮಾನ್ಯವಾದಾಗ ಮತ್ತು ಸಾಮಾನ್ಯೀಕರಣವು ಅರ್ಥಪೂರ್ಣವಾದಾಗ, ಈ ವಿನ್ಯಾಸ ತತ್ವವು ಈ ಕೆಳಗಿನ ಡಿಪೆಂಡೆನ್ಸಿ ಇನ್ವರ್ಷನ್ ಕೋಡಿಂಗ್ ಮಾದರಿಗೆ ಕಾರಣವಾಗುತ್ತದೆ. ಸಾಂಪ್ರದಾಯಿಕ ಪದರಗಳ ವಿನ್ಯಾಸ ಸಾಂಪ್ರದಾಯಿಕ ಅನ್ವಯಿಕ ವಾಸ್ತುಶಿಲ್ಪದಲ್ಲಿ, ಕೆಳಮಟ್ಟದ ಘಟಕಗಳನ್ನು (ಉದಾಹರಣೆಗೆ, ಯುಟಿಲಿಟಿ ಲೇಯರ್) ಉನ್ನತ ಮಟ್ಟದ ಘಟಕಗಳು (ಉದಾಹರಣೆಗೆ, ಪಾಲಿಸಿ ಲೇಯರ್) ಬಳಸಿಕೊಳ್ಳುವಂತೆ ವಿನ್ಯಾಸಗೊಳಿಸಲಾಗಿದೆ, ಇದು ಸಂಕೀರ್ಣ ವ್ಯವಸ್ಥೆಗಳನ್ನು ನಿರ್ಮಿಸಲು ಅನುವು ಮಾಡಿಕೊಡುತ್ತದೆ. ಈ ಸಂಯೋಜನೆಯಲ್ಲಿ, ಉನ್ನತ ಮಟ್ಟದ ಘಟಕಗಳು ಕೆಲವು ಕಾರ್ಯಗಳನ್ನು ಸಾಧಿಸಲು ನೇರವಾಗಿ ಕೆಳಮಟ್ಟದ ಘಟಕಗಳ ಮೇಲೆ ಅವಲಂಬಿತವಾಗಿರುತ್ತವೆ. ಕೆಳಮಟ್ಟದ ಘಟಕಗಳ ಮೇಲಿನ ಈ ಅವಲಂಬನೆಯು ಉನ್ನತ ಮಟ್ಟದ ಘಟಕಗಳ ಮರುಬಳಕೆಯ ಅವಕಾಶಗಳನ್ನು ಮಿತಿಗೊಳಿಸುತ್ತದೆ. ಅವಲಂಬನೆ ವಿಲೋಮ ಮಾದರಿಯ ಗುರಿಯು ಅಮೂರ್ತ ಪದರದ ಮಧ್ಯಸ್ಥಿಕೆಯೊಂದಿಗೆ ಈ ಹೆಚ್ಚು ಸಂಯೋಜಿತ ವಿತರಣೆಯನ್ನು ತಪ್ಪಿಸುವುದು ಮತ್ತು ಉನ್ನತ/ನೀತಿ ಪದರಗಳ ಮರು-ಬಳಕೆಯನ್ನು ಹೆಚ್ಚಿಸುವುದು. ಅವಲಂಬನೆ ವಿಲೋಮ ಮಾದರಿಯು ಅಮೂರ್ತ ಪದರವನ್ನು ಸೇರಿಸುವುದರೊಂದಿಗೆ, ಉನ್ನತ ಮತ್ತು ಕೆಳಮಟ್ಟದ ಪದರಗಳೆರಡೂ ಸಾಂಪ್ರದಾಯಿಕ ಅವಲಂಬನೆಗಳನ್ನು ಮೇಲಿನಿಂದ ಕೆಳಕ್ಕೆ ಕಡಿಮೆ ಮಾಡುತ್ತವೆ. ಆದಾಗ್ಯೂ, "ವಿಲೋಮ" ಪರಿಕಲ್ಪನೆಯು ಕೆಳಮಟ್ಟದ ಪದರಗಳು ನೇರವಾಗಿ ಉನ್ನತ ಮಟ್ಟದ ಪದರಗಳನ್ನು ಅವಲಂಬಿಸಿವೆ ಎಂದು ಅರ್ಥವಲ್ಲ. ಎರಡೂ ಪದರಗಳು ಉನ್ನತ ಮಟ್ಟದ ಪದರಗಳಿಗೆ ಅಗತ್ಯವಿರುವ ನಡವಳಿಕೆಯನ್ನು ಬಹಿರಂಗಪಡಿಸುವ ಅಮೂರ್ತತೆಗಳ (ಇಂಟರ್ಫೇಸ್ಗಳು) ಮೇಲೆ ಅವಲಂಬಿತವಾಗಿರಬೇಕು. ಅವಲಂಬನೆಯ ವಿಲೋಮದ ನೇರ ಅನ್ವಯದಲ್ಲಿ, ಸಾರಾಂಶಗಳು ಮೇಲಿನ/ಪಾಲಿಸಿ ಪದರಗಳ ಒಡೆತನದಲ್ಲಿರುತ್ತವೆ. ಈ ವಾಸ್ತುಶಿಲ್ಪವು ಉನ್ನತ/ನೀತಿ ಘಟಕಗಳನ್ನು ಮತ್ತು ಕಡಿಮೆ ಸೇವೆಗಳನ್ನು ಒಂದೇ ಪ್ಯಾಕೇಜ್ನಲ್ಲಿ ವ್ಯಾಖ್ಯಾನಿಸುವ ಅಮೂರ್ತತೆಗಳನ್ನು ಒಟ್ಟುಗೂಡಿಸುತ್ತದೆ. ಈ ಅಮೂರ್ತ ವರ್ಗಗಳು ಅಥವಾ ಇಂಟರ್ಫೇಸ್ಗಳ ಆನುವಂಶಿಕತೆ/ಅನುಷ್ಠಾನದಿಂದ ಕೆಳಮಟ್ಟದ ಪದರಗಳನ್ನು ರಚಿಸಲಾಗುತ್ತದೆ. ಅವಲಂಬನೆಗಳು ಮತ್ತು ಮಾಲೀಕತ್ವದ ವಿಲೋಮವು ಉನ್ನತ/ಪಾಲಿಸಿ ಪದರಗಳ ಮರುಬಳಕೆಯನ್ನು ಉತ್ತೇಜಿಸುತ್ತದೆ. ಮೇಲಿನ ಪದರಗಳು ಕೆಳಮಟ್ಟದ ಸೇವೆಗಳ ಇತರ ಅನುಷ್ಠಾನಗಳನ್ನು ಬಳಸಬಹುದು. ಕೆಳಮಟ್ಟದ ಪದರದ ಘಟಕಗಳನ್ನು ಮುಚ್ಚಿದಾಗ ಅಥವಾ ಅಪ್ಲಿಕೇಶನ್ಗೆ ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಸೇವೆಗಳ ಮರುಬಳಕೆಯ ಅಗತ್ಯವಿದ್ದಾಗ, ಸೇವೆಗಳು ಮತ್ತು ಅಮೂರ್ತತೆಗಳ ನಡುವೆ ಅಡಾಪ್ಟರ್ ಮಧ್ಯಸ್ಥಿಕೆ ವಹಿಸುವುದು ಸಾಮಾನ್ಯವಾಗಿದೆ. ಅವಲಂಬನೆ ವಿಲೋಮ ಮಾದರಿಯ ಸಾಮಾನ್ಯೀಕರಣ ಅನೇಕ ಯೋಜನೆಗಳಲ್ಲಿ ಅವಲಂಬನೆ ವಿಲೋಮ ತತ್ವ ಮತ್ತು ಮಾದರಿಯನ್ನು ಸಾಮಾನ್ಯೀಕರಿಸಬೇಕಾದ ಒಂದೇ ಪರಿಕಲ್ಪನೆಯೆಂದು ಪರಿಗಣಿಸಲಾಗುತ್ತದೆ, ಅಂದರೆ, ಸಾಫ್ಟ್ವೇರ್ ಮಾಡ್ಯೂಲ್ಗಳ ನಡುವಿನ ಎಲ್ಲಾ ಇಂಟರ್ಫೇಸ್ಗಳಿಗೆ ಅನ್ವಯಿಸಲಾಗುತ್ತದೆ. ಅದಕ್ಕೆ ಕನಿಷ್ಠ ಎರಡು ಕಾರಣಗಳಿವೆಃ ಉತ್ತಮ ಚಿಂತನೆಯ ತತ್ವವನ್ನು ಕೋಡಿಂಗ್ ಮಾದರಿಯಾಗಿ ನೋಡುವುದು ಸುಲಭ. ಅಮೂರ್ತ ವರ್ಗ ಅಥವಾ ಇಂಟರ್ಫೇಸ್ ಅನ್ನು ಕೋಡ್ ಮಾಡಿದ ನಂತರ, ಪ್ರೋಗ್ರಾಮರ್ ಹೀಗೆ ಹೇಳಬಹುದುಃ "ನಾನು ಅಮೂರ್ತತೆಯ ಕೆಲಸವನ್ನು ಮಾಡಿದ್ದೇನೆ". ಅನೇಕ ಘಟಕ ಪರೀಕ್ಷಾ ಸಾಧನಗಳು ಅಪಹಾಸ್ಯವನ್ನು ಸಾಧಿಸಲು ಆನುವಂಶಿಕತೆಯನ್ನು ಅವಲಂಬಿಸಿರುವುದರಿಂದ, ವರ್ಗಗಳ ನಡುವೆ ಸಾಮಾನ್ಯ ಸಂಪರ್ಕಸಾಧನಗಳ ಬಳಕೆಯು (ಸಾಮಾನ್ಯತೆಯನ್ನು ಬಳಸುವುದು ಅರ್ಥಪೂರ್ಣವಾದಾಗ ಮಾಡ್ಯೂಲ್ಗಳ ನಡುವೆ ಮಾತ್ರವಲ್ಲ) ನಿಯಮವಾಯಿತು. ಬಳಸಿದ ಅಪಹಾಸ್ಯ ಸಾಧನವು ಆನುವಂಶಿಕತೆಯ ಮೇಲೆ ಮಾತ್ರ ಅವಲಂಬಿತವಾಗಿದ್ದರೆ, ಅವಲಂಬನೆ ವಿಲೋಮ ಮಾದರಿಯನ್ನು ವ್ಯಾಪಕವಾಗಿ ಅನ್ವಯಿಸುವುದು ಅಗತ್ಯವಾಗಬಹುದು. ಇದು ಪ್ರಮುಖ ನ್ಯೂನತೆಗಳನ್ನು ಹೊಂದಿದೆಃ ಒಂದು ವರ್ಗದ ಮೇಲೆ ಇಂಟರ್ಫೇಸ್ ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುವುದು ಜೋಡಣೆಯನ್ನು ಕಡಿಮೆ ಮಾಡಲು ಸಾಕಾಗುವುದಿಲ್ಲ; ಸಂವಹನಗಳ ಸಂಭಾವ್ಯ ಅಮೂರ್ತತೆಯ ಬಗ್ಗೆ ಮಾತ್ರ ಯೋಚಿಸುವುದು ಕಡಿಮೆ ಜೋಡಿಸಲಾದ ವಿನ್ಯಾಸಕ್ಕೆ ಕಾರಣವಾಗಬಹುದು. ಯೋಜನೆಯಲ್ಲಿ ಎಲ್ಲೆಡೆ ಜೆನೆರಿಕ್ ಇಂಟರ್ಫೇಸ್ಗಳನ್ನು ಅನುಷ್ಠಾನಗೊಳಿಸುವುದರಿಂದ ಅದನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು ಮತ್ತು ನಿರ್ವಹಿಸುವುದು ಕಷ್ಟವಾಗುತ್ತದೆ. ಪ್ರತಿ ಹಂತದಲ್ಲೂ ಓದುಗನು ಈ ಇಂಟರ್ಫೇಸ್ನ ಇತರ ಅನುಷ್ಠಾನಗಳು ಯಾವುವು ಎಂದು ತನ್ನನ್ನು ತಾನೇ ಕೇಳಿಕೊಳ್ಳುತ್ತಾನೆ ಮತ್ತು ಪ್ರತಿಕ್ರಿಯೆ ಸಾಮಾನ್ಯವಾಗಿಃ ಕೇವಲ ಅಣಕಗಳು. ಇಂಟರ್ಫೇಸ್ ಸಾಮಾನ್ಯೀಕರಣಕ್ಕೆ ಹೆಚ್ಚು ಕೊಳಾಯಿ ಕೋಡ್ ಅಗತ್ಯವಿರುತ್ತದೆ, ನಿರ್ದಿಷ್ಟ ಕಾರ್ಖಾನೆಗಳಲ್ಲಿ ಸಾಮಾನ್ಯವಾಗಿ ಅವಲಂಬನೆ-ಇಂಜೆಕ್ಷನ್ ಚೌಕಟ್ಟನ್ನು ಅವಲಂಬಿಸಿರುತ್ತದೆ. ಇಂಟರ್ಫೇಸ್ ಸಾಮಾನ್ಯೀಕರಣವು ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆಯ ಬಳಕೆಯನ್ನು ಸಹ ನಿರ್ಬಂಧಿಸುತ್ತದೆ. ಸಾಮಾನ್ಯೀಕರಣದ ನಿರ್ಬಂಧಗಳು ಡಿಪೆಂಡೆನ್ಸಿ ಇನ್ವರ್ಷನ್ ಪ್ಯಾಟರ್ನ್ (ಡಿಐಪಿ) ಅನ್ನು ಸಾಧಿಸಲು ಇಂಟರ್ಫೇಸ್ಗಳ ಉಪಸ್ಥಿತಿಯು ಆಬ್ಜೆಕ್ಟ್-ಓರಿಯೆಂಟೆಡ್ ಪ್ರೋಗ್ರಾಂನಲ್ಲಿ ಇತರ ವಿನ್ಯಾಸದ ಪರಿಣಾಮಗಳನ್ನು ಹೊಂದಿದೆಃ ಒಂದು ವರ್ಗದ ಎಲ್ಲಾ ಸದಸ್ಯ ಅಸ್ಥಿರಗಳು ಇಂಟರ್ಫೇಸ್ಗಳು ಅಥವಾ ಅಮೂರ್ತವಾಗಿರಬೇಕು. ಎಲ್ಲಾ ಕಾಂಕ್ರೀಟ್ ಕ್ಲಾಸ್ ಪ್ಯಾಕೇಜುಗಳು ಇಂಟರ್ಫೇಸ್ ಅಥವಾ ಅಬ್ಸ್ಟ್ರಾಕ್ಟ್ ಕ್ಲಾಸ್ ಪ್ಯಾಕೇಜುಗಳ ಮೂಲಕ ಮಾತ್ರ ಸಂಪರ್ಕ ಹೊಂದಿರಬೇಕು. ಯಾವುದೇ ವರ್ಗವು ಕಾಂಕ್ರೀಟ್ ವರ್ಗದಿಂದ ಉದ್ಭವಿಸಬಾರದು. ಯಾವುದೇ ವಿಧಾನವು ಕಾರ್ಯಗತಗೊಳಿಸಿದ ವಿಧಾನವನ್ನು ಅತಿಕ್ರಮಿಸಬಾರದು. ಎಲ್ಲಾ ವೇರಿಯೇಬಲ್ ಇನ್ಸ್ಟಂಟಿಯೇಷನ್ಗೆ ಫ್ಯಾಕ್ಟರಿ ವಿಧಾನ ಅಥವಾ ಫ್ಯಾಕ್ಟರಿ ಮಾದರಿಯಂತಹ ಸೃಷ್ಟಿಯ ಮಾದರಿಯ ಅನುಷ್ಠಾನ ಅಥವಾ ಅವಲಂಬನೆ-ಇಂಜೆಕ್ಷನ್ ಚೌಕಟ್ಟಿನ ಬಳಕೆಯ ಅಗತ್ಯವಿರುತ್ತದೆ. ಇಂಟರ್ಫೇಸ್ ಅಪಹಾಸ್ಯ ನಿರ್ಬಂಧಗಳನ್ನು ಆನುವಂಶಿಕ-ಆಧಾರಿತ ಅಪಹಾಸ್ಯ ಸಾಧನಗಳನ್ನು ಬಳಸುವುದರಿಂದ ನಿರ್ಬಂಧಗಳನ್ನು ಸಹ ಪರಿಚಯಿಸಲಾಗುತ್ತದೆಃ ಸ್ಥಿರವಾದ ಬಾಹ್ಯವಾಗಿ ಗೋಚರಿಸುವ ಸದಸ್ಯರು ವ್ಯವಸ್ಥಿತವಾಗಿ ಅವಲಂಬನೆಯ ಚುಚ್ಚುಮದ್ದನ್ನು ಅವಲಂಬಿಸಬೇಕು, ಇದರಿಂದಾಗಿ ಅವುಗಳನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುವುದು ತುಂಬಾ ಕಷ್ಟವಾಗುತ್ತದೆ. ಪರೀಕ್ಷಿಸಬಹುದಾದ ಎಲ್ಲಾ ವಿಧಾನಗಳು ಇಂಟರ್ಫೇಸ್ ಅನುಷ್ಠಾನವಾಗಬೇಕು ಅಥವಾ ಅಮೂರ್ತ ವ್ಯಾಖ್ಯಾನದ ಅತಿಕ್ರಮಣವಾಗಬೇಕು. ಭವಿಷ್ಯದ ದಿಕ್ಕುಗಳು ತತ್ವಗಳು ಚಿಂತನೆಯ ವಿಧಾನಗಳಾಗಿವೆ. ಮಾದರಿಗಳು ಸಮಸ್ಯೆಗಳನ್ನು ಪರಿಹರಿಸಲು ಸಾಮಾನ್ಯ ಮಾರ್ಗಗಳಾಗಿವೆ. ಕಾಣೆಯಾದ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆಯ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಗುರುತಿಸಲು ಕೋಡಿಂಗ್ ಮಾದರಿಗಳು ಅಸ್ತಿತ್ವದಲ್ಲಿರಬಹುದು. ಕನಿಷ್ಠ ಎರಡು ದಿಕ್ಕುಗಳಲ್ಲಿ ಬಲವಾದ ಮತ್ತು ಹೆಚ್ಚು ನಿಖರವಾದ ಬಳಕೆಯ ಒಪ್ಪಂದಗಳನ್ನು ಜಾರಿಗೊಳಿಸಲು ಅನುವು ಮಾಡಿಕೊಡಲು ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆಗಳು ವಿಕಸನಗೊಳ್ಳುತ್ತಲೇ ಇರುತ್ತವೆಃ ಬಳಕೆಯ ಷರತ್ತುಗಳನ್ನು (ಪೂರ್ವ, ನಂತರದ ಮತ್ತು ಅಸ್ಥಿರ ಪರಿಸ್ಥಿತಿಗಳು) ಮತ್ತು ರಾಜ್ಯ-ಆಧಾರಿತ ಇಂಟರ್ಫೇಸ್ಗಳನ್ನು ಜಾರಿಗೊಳಿಸುವುದು. ಇದು ಬಹುಶಃ ಅನೇಕ ಸಂದರ್ಭಗಳಲ್ಲಿ ಅವಲಂಬನೆ ವಿಲೋಮ ಮಾದರಿಯ ಬಲವಾದ ಅನ್ವಯವನ್ನು ಪ್ರೋತ್ಸಾಹಿಸುತ್ತದೆ ಮತ್ತು ಸರಳಗೊಳಿಸುತ್ತದೆ. ಹೆಚ್ಚು ಹೆಚ್ಚು ಅಪಹಾಸ್ಯ ಸಾಧನಗಳು ಈಗ ಸ್ಥಿರ ಮತ್ತು ವರ್ಚುವಲ್ ಅಲ್ಲದ ಸದಸ್ಯರನ್ನು ಬದಲಿಸುವ ಸಮಸ್ಯೆಯನ್ನು ಪರಿಹರಿಸಲು ಅವಲಂಬನೆ-ಚುಚ್ಚುಮದ್ದನ್ನು ಬಳಸುತ್ತವೆ. ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆಗಳು ಬಹುಶಃ ಅಪಹಾಸ್ಯ-ಹೊಂದಿಕೆಯಾಗುವ ಬೈಟ್ಕೋಡ್ ಅನ್ನು ಉತ್ಪಾದಿಸಲು ವಿಕಸನಗೊಳ್ಳುತ್ತವೆ. ವರ್ಚುವಲ್ ಅಲ್ಲದ ಸದಸ್ಯರ ಬಳಕೆಯನ್ನು ನಿರ್ಬಂಧಿಸುವುದು ಒಂದು ನಿರ್ದೇಶನವಾಗಿದೆ. ಎರಡನೆಯದು, ಕನಿಷ್ಠ ಪರೀಕ್ಷಾ ಸಂದರ್ಭಗಳಲ್ಲಿ, ಬೈಟೆಕೋಡ್ ಅನ್ನು ರಚಿಸುವುದು, ಇದು ಆನುವಂಶಿಕವಲ್ಲದ ಆಧಾರಿತ ಅಪಹಾಸ್ಯವನ್ನು ಅನುಮತಿಸುತ್ತದೆ. ಅನುಷ್ಠಾನಗಳು ಡಿಐಪಿಯ ಎರಡು ಸಾಮಾನ್ಯ ಅನುಷ್ಠಾನಗಳು ಒಂದೇ ರೀತಿಯ ತಾರ್ಕಿಕ ರಚನೆಯನ್ನು ಬಳಸುತ್ತವೆ ಆದರೆ ವಿಭಿನ್ನ ಪರಿಣಾಮಗಳನ್ನು ಹೊಂದಿವೆ. ನೇರ ಅನುಷ್ಠಾನವು ನೀತಿ ತರಗತಿಗಳನ್ನು ಒಂದು ಗ್ರಂಥಾಲಯದಲ್ಲಿ ಸೇವಾ ಅಮೂರ್ತ ತರಗತಿಗಳೊಂದಿಗೆ ಪ್ಯಾಕೇಜ್ ಮಾಡುತ್ತದೆ. ಈ ಅನುಷ್ಠಾನದಲ್ಲಿ ಉನ್ನತ ಮಟ್ಟದ ಘಟಕಗಳು ಮತ್ತು ಕಡಿಮೆ ಮಟ್ಟದ ಘಟಕಗಳನ್ನು ಪ್ರತ್ಯೇಕ ಪ್ಯಾಕೇಜುಗಳು/ಗ್ರಂಥಾಲಯಗಳಾಗಿ ವಿತರಿಸಲಾಗುತ್ತದೆ, ಅಲ್ಲಿ ಉನ್ನತ ಮಟ್ಟದ ಘಟಕಕ್ಕೆ ಅಗತ್ಯವಿರುವ ನಡವಳಿಕೆ/ಸೇವೆಗಳನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುವ ಇಂಟರ್ಫೇಸ್ಗಳು ಅದರ ಒಡೆತನದಲ್ಲಿರುತ್ತವೆ ಮತ್ತು ಉನ್ನತ ಮಟ್ಟದ ಘಟಕಗಳ ಗ್ರಂಥಾಲಯದಲ್ಲಿ ಅಸ್ತಿತ್ವದಲ್ಲಿರುತ್ತವೆ. ಕೆಳಮಟ್ಟದ ಘಟಕದಿಂದ ಉನ್ನತ ಮಟ್ಟದ ಘಟಕ ಇಂಟರ್ಫೇಸ್ನ ಅನುಷ್ಠಾನಕ್ಕೆ ಕಡಿಮೆ ಮಟ್ಟದ ಘಟಕ ಪ್ಯಾಕೇಜ್ ಸಂಕಲನಕ್ಕಾಗಿ ಉನ್ನತ ಮಟ್ಟದ ಘಟಕವನ್ನು ಅವಲಂಬಿಸಿರುತ್ತದೆ, ಹೀಗಾಗಿ ಸಾಂಪ್ರದಾಯಿಕ ಅವಲಂಬನೆ ಸಂಬಂಧವನ್ನು ತಿರುಗಿಸುತ್ತದೆ. ಚಿತ್ರ 1 ಮತ್ತು 2 ಒಂದೇ ಕಾರ್ಯವನ್ನು ಹೊಂದಿರುವ ಕೋಡ್ ಅನ್ನು ವಿವರಿಸುತ್ತವೆ, ಆದಾಗ್ಯೂ ಚಿತ್ರ 2 ರಲ್ಲಿ, ಅವಲಂಬನೆಯನ್ನು ತಿರುಗಿಸಲು ಇಂಟರ್ಫೇಸ್ ಅನ್ನು ಬಳಸಲಾಗಿದೆ. ನೀತಿ ಸಂಹಿತೆಯ ಮರುಬಳಕೆಯನ್ನು ಗರಿಷ್ಠಗೊಳಿಸಲು ಮತ್ತು ಆವರ್ತಕ ಅವಲಂಬನೆಗಳನ್ನು ತೊಡೆದುಹಾಕಲು ಅವಲಂಬನೆಯ ದಿಕ್ಕನ್ನು ಆಯ್ಕೆ ಮಾಡಬಹುದು. ಡಿಐಪಿಯ ಈ ಆವೃತ್ತಿಯಲ್ಲಿ, ಕೆಳ ಪದರದ ಘಟಕವು ಉನ್ನತ ಮಟ್ಟದ ಪದರಗಳಲ್ಲಿನ ಇಂಟರ್ಫೇಸ್ಗಳು/ಅಬ್ಸ್ಟ್ರ್ಯಾಕ್ಟ್ಗಳ ಮೇಲೆ ಅವಲಂಬಿತವಾಗಿರುವುದು ಕೆಳ ಪದರದ ಘಟಕಗಳ ಮರು ಬಳಕೆಯನ್ನು ಕಷ್ಟಕರವಾಗಿಸುತ್ತದೆ. ಈ ಅನುಷ್ಠಾನವು ಸಾಂಪ್ರದಾಯಿಕ ಅವಲಂಬನೆಯನ್ನು ಮೇಲಿನಿಂದ ಕೆಳಕ್ಕೆ, ಕೆಳಗಿನಿಂದ ಮೇಲಕ್ಕೆ "ತಲೆಕೆಳಗಾಗಿಸುತ್ತದೆ". ಹೆಚ್ಚು ಹೊಂದಿಕೊಳ್ಳುವ ಪರಿಹಾರವು ಅಮೂರ್ತ ಘಟಕಗಳನ್ನು ಸ್ವತಂತ್ರ ಪ್ಯಾಕೇಜುಗಳು/ಗ್ರಂಥಾಲಯಗಳ ಗುಂಪಿನಲ್ಲಿ ಹೊರತೆಗೆಯುತ್ತದೆಃ ಪ್ರತಿ ಪದರವನ್ನು ತನ್ನದೇ ಆದ ಪ್ಯಾಕೇಜಿನಲ್ಲಿ ಬೇರ್ಪಡಿಸುವುದರಿಂದ ಯಾವುದೇ ಪದರದ ಮರು ಬಳಕೆಯನ್ನು ಉತ್ತೇಜಿಸುತ್ತದೆ, ಇದು ದೃಢತೆ ಮತ್ತು ಚಲನಶೀಲತೆಯನ್ನು ಒದಗಿಸುತ್ತದೆ. ಉದಾಹರಣೆಗಳು ವಂಶಾವಳಿಯ ಮಾಡ್ಯೂಲ್ ಒಂದು ವಂಶಾವಳಿಯ ವ್ಯವಸ್ಥೆಯು ಜನರ ನಡುವಿನ ಸಂಬಂಧಗಳನ್ನು ಅವರ ನಡುವಿನ ನೇರ ಸಂಬಂಧಗಳ ರೇಖಾಚಿತ್ರವಾಗಿ ಪ್ರತಿನಿಧಿಸಬಹುದು (ತಂದೆ-ಮಗ, ತಂದೆ-ಮಗಳು, ತಾಯಿ-ಮಗ, ತಾಯಿ-ಮಗಳು, ಗಂಡ-ಹೆಂಡತಿ, ಹೆಂಡತಿ-ಗಂಡ, ಇತ್ಯಾದಿ). ಮಾಜಿ ಪತಿ ಅಥವಾ ಕಾನೂನುಬದ್ಧ ಪೋಷಕರನ್ನು ಸೇರಿಸುವುದು ಸುಲಭವಾಗಿರುವುದರಿಂದ ಇದು ತುಂಬಾ ಪರಿಣಾಮಕಾರಿಯಾಗಿದೆ ಮತ್ತು ವಿಸ್ತರಿಸಬಹುದಾಗಿದೆ. ಆದರೆ ಕೆಲವು ಉನ್ನತ ಮಟ್ಟದ ಮಾಡ್ಯೂಲ್ಗಳಿಗೆ ವ್ಯವಸ್ಥೆಯನ್ನು ಬ್ರೌಸ್ ಮಾಡಲು ಸರಳವಾದ ಮಾರ್ಗ ಬೇಕಾಗಬಹುದುಃ ಯಾವುದೇ ವ್ಯಕ್ತಿಗೆ ಮಕ್ಕಳು, ಪೋಷಕರು, ಒಡಹುಟ್ಟಿದವರು (ಮಲಸಹೋದರರು ಮತ್ತು ಸಹೋದರಿಯರನ್ನು ಒಳಗೊಂಡಂತೆ), ಅಜ್ಜ-ಅಜ್ಜಿ, ಸೋದರಸಂಬಂಧಿಗಳು ಮತ್ತು ಮುಂತಾದವರು ಇರಬಹುದು. ವಂಶಾವಳಿಯ ಮಾಡ್ಯೂಲ್ನ ಬಳಕೆಯನ್ನು ಅವಲಂಬಿಸಿ, ಸಾಮಾನ್ಯ ಸಂಬಂಧಗಳನ್ನು ವಿಭಿನ್ನ ನೇರ ಗುಣಲಕ್ಷಣಗಳಾಗಿ ಪ್ರಸ್ತುತಪಡಿಸುವುದು (ಗ್ರಾಫ್ ಅನ್ನು ಮರೆಮಾಡುವುದು) ಉನ್ನತ ಮಟ್ಟದ ಮಾಡ್ಯೂಲ್ ಮತ್ತು ವಂಶಾವಳಿಯ ಮಾಡ್ಯೂಲ್ನ ನಡುವಿನ ಜೋಡಣೆಯನ್ನು ಹೆಚ್ಚು ಹಗುರವಾಗಿಸುತ್ತದೆ ಮತ್ತು ಅವುಗಳನ್ನು ಬಳಸುವ ಮಾಡ್ಯೂಲ್ಗಳ ಮೇಲೆ ಯಾವುದೇ ಪರಿಣಾಮ ಬೀರದೆ ನೇರ ಸಂಬಂಧಗಳ ಆಂತರಿಕ ಪ್ರಾತಿನಿಧ್ಯವನ್ನು ಸಂಪೂರ್ಣವಾಗಿ ಬದಲಾಯಿಸಲು ಅನುವು ಮಾಡಿಕೊಡುತ್ತದೆ. ಇದು ಒಡಹುಟ್ಟಿದವರು ಅಥವಾ ಚಿಕ್ಕಪ್ಪಂದಿರ ನಿಖರವಾದ ವ್ಯಾಖ್ಯಾನಗಳನ್ನು ವಂಶಾವಳಿಯ ಮಾಡ್ಯೂಲ್ನಲ್ಲಿ ಅಳವಡಿಸಲು ಸಹ ಅನುಮತಿಸುತ್ತದೆ, ಹೀಗಾಗಿ ಏಕ ಜವಾಬ್ದಾರಿಯ ತತ್ವವನ್ನು ಜಾರಿಗೊಳಿಸುತ್ತದೆ. ಅಂತಿಮವಾಗಿ, ಮೊದಲ ಎಕ್ಸ್ಟೆನ್ಸಿಬಲ್ ಸಾಮಾನ್ಯೀಕೃತ ಗ್ರಾಫ್ ವಿಧಾನವು ಅತ್ಯಂತ ವಿಸ್ತರಿಸಬಹುದಾದಂತೆ ಕಂಡುಬಂದರೆ, ವಂಶಾವಳಿಯ ಮಾಡ್ಯೂಲ್ನ ಬಳಕೆಯು ಅಪ್ಲಿಕೇಶನ್ (ಗಳು) ಗೆ ಹೆಚ್ಚು ವಿಶೇಷವಾದ ಮತ್ತು ಸರಳವಾದ ಸಂಬಂಧ ಅನುಷ್ಠಾನವು ಸಾಕಾಗುತ್ತದೆ ಮತ್ತು ಹೆಚ್ಚು ಪರಿಣಾಮಕಾರಿ ವ್ಯವಸ್ಥೆಯನ್ನು ರಚಿಸಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ ಎಂದು ತೋರಿಸಬಹುದು. ಈ ಉದಾಹರಣೆಯಲ್ಲಿ, ಮಾಡ್ಯೂಲ್ಗಳ ನಡುವಿನ ಪರಸ್ಪರ ಕ್ರಿಯೆಯನ್ನು ಅಮೂರ್ತಗೊಳಿಸುವುದು ಕೆಳಮಟ್ಟದ ಮಾಡ್ಯೂಲ್ನ ಸರಳೀಕೃತ ಇಂಟರ್ಫೇಸ್ಗೆ ಕಾರಣವಾಗುತ್ತದೆ ಮತ್ತು ಅದರ ಸರಳ ಅನುಷ್ಠಾನಕ್ಕೆ ಕಾರಣವಾಗಬಹುದು. ರಿಮೋಟ್ ಫೈಲ್ ಸರ್ವರ್ ಕ್ಲೈಂಟ್ ಒಂದು ರಿಮೋಟ್ ಫೈಲ್ ಸರ್ವರ್ (ಎಫ್ಟಿಪಿ, ಕ್ಲೌಡ್ ಸ್ಟೋರೇಜ್.) ಕ್ಲೈಂಟ್ ಅನ್ನು ಅಮೂರ್ತ ಇಂಟರ್ಫೇಸ್ಗಳ ಗುಂಪಾಗಿ ರೂಪಿಸಬಹುದುಃ ಸಂಪರ್ಕ/ಸಂಪರ್ಕ ಕಡಿತ (ಸಂಪರ್ಕ ನಿರಂತರತೆ ಪದರದ ಅಗತ್ಯವಿರಬಹುದು) ಫೋಲ್ಡರ್/ಟ್ಯಾಗ್ಗಳ ರಚನೆ/ಮರುನಾಮಕರಣ/ಅಳಿಸುವಿಕೆ/ಪಟ್ಟಿ ಇಂಟರ್ಫೇಸ್ ಫೈಲ್ ರಚನೆ/ಬದಲಿ/ಮರುನಾಮಕರಣ/ಅಳಿಸುವಿಕೆ/ಓದುವ ಇಂಟರ್ಫೇಸ್ ಫೈಲ್ ಅನ್ನು ಏಕಕಾಲದಲ್ಲಿ ಬದಲಿಸಲು ಅಥವಾ ರೆಸಲ್ಯೂಶನ್ ಫೈಲ್ ಇತಿಹಾಸ ನಿರ್ವಹಣೆಯನ್ನು ಅಳಿಸಲು ಹುಡುಕುತ್ತದೆ. ಸ್ಥಳೀಯ ಮತ್ತು ದೂರಸ್ಥ ಕಡತಗಳು ಒಂದೇ ಅಮೂರ್ತ ಇಂಟರ್ಫೇಸ್ಗಳನ್ನು ಒದಗಿಸಿದರೆ, ಅವಲಂಬನೆಯ ವಿಲೋಮ ಮಾದರಿಯನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುವ ಉನ್ನತ ಮಟ್ಟದ ಮಾಡ್ಯೂಲ್ಗಳು ಅವುಗಳನ್ನು ವಿವೇಚನಾರಹಿತವಾಗಿ ಬಳಸಬಹುದು. ಅಪ್ಲಿಕೇಶನ್ ತನ್ನ ದಾಖಲೆಗಳನ್ನು ಸ್ಥಳೀಯವಾಗಿ ಅಥವಾ ದೂರದಿಂದ ಪಾರದರ್ಶಕವಾಗಿ ಉಳಿಸಲು ಸಾಧ್ಯವಾಗುತ್ತದೆ. ಉನ್ನತ ಮಟ್ಟದ ಮಾಡ್ಯೂಲ್ಗಳಿಗೆ ಅಗತ್ಯವಿರುವ ಸೇವೆಯ ಮಟ್ಟವನ್ನು ಪರಿಗಣಿಸಬೇಕು. ಮಾಡ್ಯೂಲ್ ಅನ್ನು ಅಮೂರ್ತ ಇಂಟರ್ಫೇಸ್ಗಳ ಗುಂಪಾಗಿ ವಿನ್ಯಾಸಗೊಳಿಸುವುದು ಮತ್ತು ಅದಕ್ಕೆ ಇತರ ಮಾಡ್ಯೂಲ್ಗಳನ್ನು ಅಳವಡಿಸಿಕೊಳ್ಳುವುದು, ಅನೇಕ ವ್ಯವಸ್ಥೆಗಳಿಗೆ ಸಾಮಾನ್ಯ ಇಂಟರ್ಫೇಸ್ ಅನ್ನು ಒದಗಿಸುತ್ತದೆ. ಮಾದರಿ-ವೀಕ್ಷಣೆ-ನಿಯಂತ್ರಕ ಯುಐ ಮತ್ತು ಅಪ್ಲಿಕೇಶನ್ ಲೇಯರ್ ಪ್ಯಾಕೇಜುಗಳು ಮುಖ್ಯವಾಗಿ ಕಾಂಕ್ರೀಟ್ ವರ್ಗಗಳನ್ನು ಹೊಂದಿರುತ್ತವೆ. ನಿಯಂತ್ರಕಗಳು ಅಮೂರ್ತ/ಇಂಟರ್ಫೇಸ್ ಪ್ರಕಾರಗಳನ್ನು ಹೊಂದಿರುತ್ತವೆ. ಯುಐ ಐ ಕಸ್ಟೋಮರ್ ಹ್ಯಾಂಡ್ಲರ್ನ ಒಂದು ಉದಾಹರಣೆಯನ್ನು ಹೊಂದಿದೆ. ಎಲ್ಲಾ ಪ್ಯಾಕೇಜುಗಳನ್ನು ಭೌತಿಕವಾಗಿ ಬೇರ್ಪಡಿಸಲಾಗಿದೆ. ಅಪ್ಲಿಕೇಶನ್ ಲೇಯರ್ನಲ್ಲಿ ಪೇಜ್ ಕ್ಲಾಸ್ ಬಳಸುವ ಕಸ್ಟಮರ್ ಹ್ಯಾಂಡ್ಲರ್ನ ಕಾಂಕ್ರೀಟ್ ಅನುಷ್ಠಾನವಿದೆ. iCustomerHandler ಇಂಟರ್ಫೇಸ್ನ ನಿದರ್ಶನಗಳನ್ನು ಫ್ಯಾಕ್ಟರಿಯಿಂದ ಕ್ರಿಯಾತ್ಮಕವಾಗಿ ರಚಿಸಲಾಗಿದೆ (ಬಹುಶಃ ಅದೇ ಕಂಟ್ರೋಲರ್ ಪ್ಯಾಕೇಜಿನಲ್ಲಿ). ಕಾಂಕ್ರೀಟ್ ಪ್ರಕಾರಗಳಾದ ಪೇಜ್ ಮತ್ತು ಕಸ್ಟಮರ್ ಹ್ಯಾಂಡ್ಲರ್ಗಳು ಪರಸ್ಪರ ಅವಲಂಬಿತವಾಗಿರದೆ, ICustomerHandler ಅನ್ನು ಅವಲಂಬಿಸಿವೆ. ಯುಐ ಅಪ್ಲಿಕೇಶನ್ ಲೇಯರ್ ಅಥವಾ ಐ ಕಸ್ಟೋಮರ್ ಹ್ಯಾಂಡ್ಲರ್ ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುವ ಯಾವುದೇ ಕಾಂಕ್ರೀಟ್ ಪ್ಯಾಕೇಜ್ ಅನ್ನು ಉಲ್ಲೇಖಿಸುವುದಿಲ್ಲವಾದ್ದರಿಂದ, ಕಸ್ಟಮರ್ ಹ್ಯಾಂಡ್ಲರ್ನ ಕಾಂಕ್ರೀಟ್ ಅನುಷ್ಠಾನವನ್ನು ಯುಐ ವರ್ಗವನ್ನು ಬದಲಾಯಿಸದೆ ಬದಲಾಯಿಸಬಹುದು. ಅಲ್ಲದೆ, ಪೇಜ್ ಕ್ಲಾಸ್ ಇಂಟರ್ಫೇಸ್ ಐಪೇಜ್ ವ್ಯೂವರ್ ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುತ್ತದೆ, ಇದನ್ನು ಐ ಕಸ್ಟೋಮರ್ ಹ್ಯಾಂಡ್ಲರ್ ವಿಧಾನಗಳಿಗೆ ವಾದವಾಗಿ ರವಾನಿಸಬಹುದು, ಇದು ಗ್ರಾಹಕ ಹ್ಯಾಂಡ್ಲರ್ನ ಕಾಂಕ್ರೀಟ್ ಅನುಷ್ಠಾನಕ್ಕೆ ಕಾಂಕ್ರೀಟ್ ಅವಲಂಬನೆಯಿಲ್ಲದೆ ಯುಐಯೊಂದಿಗೆ ಸಂವಹನ ನಡೆಸಲು ಅನುವು ಮಾಡಿಕೊಡುತ್ತದೆ. ಮತ್ತೆ, ಎರಡೂ ಇಂಟರ್ಫೇಸ್ಗಳಿಂದ ಸಂಪರ್ಕ ಹೊಂದಿವೆ. ಅವಲಂಬನೆ ವಿಲೋಮ ತತ್ವವನ್ನು ಅನ್ವಯಿಸುವ ಸಂಬಂಧಿತ ಮಾದರಿಗಳನ್ನು ಅಡಾಪ್ಟರ್ ಮಾದರಿಯ ಉದಾಹರಣೆಯಾಗಿ ಸಹ ಕಾಣಬಹುದು. ಅಂದರೆ, ಉನ್ನತ ಮಟ್ಟದ ವರ್ಗವು ತನ್ನದೇ ಆದ ಅಡಾಪ್ಟರ್ ಇಂಟರ್ಫೇಸ್ ಅನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುತ್ತದೆ, ಇದು ಇತರ ಉನ್ನತ ಮಟ್ಟದ ವರ್ಗಗಳು ಅವಲಂಬಿಸಿರುವ ಅಮೂರ್ತತೆಯಾಗಿದೆ. ಹೊಂದಾಣಿಕೆಯ ಅನುಷ್ಠಾನವು ಅದೇ ಅಡಾಪ್ಟರ್ ಇಂಟರ್ಫೇಸ್ ಅಮೂರ್ತತೆಯ ಮೇಲೆ ಅವಲಂಬಿತವಾಗಿರುತ್ತದೆ, ಆದರೆ ಅದನ್ನು ತನ್ನದೇ ಆದ ಕೆಳ-ಮಟ್ಟದ ಮಾಡ್ಯೂಲ್ನಿಂದ ಕೋಡ್ ಅನ್ನು ಬಳಸುವ ಮೂಲಕ ಕಾರ್ಯಗತಗೊಳಿಸಬಹುದು. ಉನ್ನತ-ಮಟ್ಟದ ಮಾಡ್ಯೂಲ್ ಕೆಳ-ಮಟ್ಟದ ಮಾಡ್ಯೂಲ್ನ ಮೇಲೆ ಅವಲಂಬಿತವಾಗಿಲ್ಲ, ಏಕೆಂದರೆ ಇದು ಅಡಾಪ್ಟರ್ ಇಂಟರ್ಫೇಸ್ ಮೂಲಕ ಪರೋಕ್ಷವಾಗಿ ಕೆಳ-ಮಟ್ಟದ ಕಾರ್ಯವನ್ನು ಮಾತ್ರ ಬಳಸುತ್ತದೆ, ಇದು ಹೊಂದಾಣಿಕೆಯ ಅನುಷ್ಠಾನ ಮತ್ತು ಅದರ ಕೆಳ-ಮಟ್ಟದ ಮಾಡ್ಯೂಲ್ನಿಂದ ಕಾರ್ಯಗತಗೊಳಿಸಲಾದ ಇಂಟರ್ಫೇಸ್ಗೆ ಬಹುರೂಪದ ವಿಧಾನಗಳನ್ನು ಆಹ್ವಾನಿಸುತ್ತದೆ. ಪ್ಲಗಿನ್, ಸರ್ವೀಸ್ ಲೊಕೇಟರ್ ಅಥವಾ ಡಿಪೆಂಡೆನ್ಸಿ ಇಂಜೆಕ್ಷನ್ನಂತಹ ವಿವಿಧ ಮಾದರಿಗಳನ್ನು ಉನ್ನತ ಮಟ್ಟದ ಘಟಕಕ್ಕೆ ಆಯ್ದ ಕಡಿಮೆ-ಮಟ್ಟದ ಘಟಕ ಅನುಷ್ಠಾನದ ರನ್-ಟೈಮ್ ಪ್ರೊವಿಷನಿಂಗ್ಗೆ ಅನುಕೂಲವಾಗುವಂತೆ ಬಳಸಲಾಗುತ್ತದೆ. ಅವಲಂಬನೆ ವಿಲೋಮ ತತ್ವವನ್ನು ರಾಬರ್ಟ್ ಸಿ. ಮಾರ್ಟಿನ್ ಪ್ರತಿಪಾದಿಸಿದರು ಮತ್ತು ಆಬ್ಜೆಕ್ಟ್ ಓರಿಯೆಂಟೆಡ್ ಡಿಸೈನ್ ಕ್ವಾಲಿಟಿ ಮೆಟ್ರಿಕ್ಸ್ಃ ಅವಲಂಬನೆಗಳ ವಿಶ್ಲೇಷಣೆ, ಮೇ 1996 ರಲ್ಲಿ ಸಿ + + ವರದಿಯಲ್ಲಿ ದಿ ಡಿಪೆಂಡೆನ್ಸಿ ಇನ್ವರ್ಷನ್ ಪ್ರಿನ್ಸಿಪಲ್ ಎಂಬ ಶೀರ್ಷಿಕೆಯ ಲೇಖನ, ಮತ್ತು ಚುರುಕಾದ ಸಾಫ್ಟ್ವೇರ್ ಡೆವಲಪ್ಮೆಂಟ್, ಪ್ರಿನ್ಸಿಪಲ್ಸ್, ಪ್ಯಾಟರ್ನ್ಸ್, ಮತ್ತು ಪ್ರಾಕ್ಟೀಸಸ್, ಮತ್ತು ಚುರುಕಾದ ತತ್ವಗಳು, ಪ್ಯಾಟರ್ನ್ಸ್, ಮತ್ತು ಪ್ರಾಕ್ಟೀಸಸ್ ಇನ್ ಸಿ #ಪುಸ್ತಕಗಳು ಸೇರಿದಂತೆ ಹಲವಾರು ಪ್ರಕಟಣೆಗಳಲ್ಲಿ ವಿವರಿಸಲಾಗಿದೆ. ಅಡಾಪ್ಟರ್ ಪ್ಯಾಟರ್ನ್ ಡಿಪೆಂಡೆನ್ಸಿ ಇಂಜೆಕ್ಷನ್ ಡಿಸೈನ್ ಬೈ ಕಾಂಟ್ರಾಕ್ಟ್ ಇಂಟರ್ಫೇಸ್ ಇನ್ವೆಂಟರ್ಸ್ ಪ್ಯಾರಡಾಕ್ಸ್ ಇನ್ವರ್ಷನ್ ಆಫ್ ಕಂಟ್ರೋಲ್ ಪ್ಲಗ್-ಇನ್ (ಕಂಪ್ಯೂಟಿಂಗ್) ಸರ್ವೀಸ್ ಲೊಕೇಟರ್ ಪ್ಯಾಟರ್ನ್ ಸಾಲಿಡ್-"ಸೋಲಿಡ್" ನಲ್ಲಿರುವ "ಡಿ" ಎಂದರೆ ಡಿಪೆಂಡೆನ್ಸಿ ಇನ್ವರ್ಷನ್ ಪ್ರಿನ್ಸಿಪಲ್ ರೆಫರೆನ್ಸಸ್ ಆಬ್ಜೆಕ್ಟ್ ಓರಿಯೆಂಟೆಡ್ ಡಿಸೈನ್ ಕ್ವಾಲಿಟಿ ಮೆಟ್ರಿಕ್ಸ್ಃ ಆನ್ ಅನಾಲಿಸಿಸ್ ಆಫ್ ಡಿಪೆಂಡೆನ್ಸಿ ರಾಬರ್ಟ್ ಸಿ. ಮಾರ್ಟಿನ್, ಸಿ + + ರಿಪೋರ್ಟ್, ಸೆಪ್ಟೆಂಬರ್/ಅಕ್ಟೋಬರ್ 1995 ದಿ ಡಿಪೆಂಡೆನ್ಸಿ ಇನ್ವರ್ಷನ್ ಪ್ರಿನ್ಸಿಪಲ್, ರಾಬರ್ಟ್ ಸಿ. ಮಾರ್ಟಿನ್, ಸಿ + + ರಿಪೋರ್ಟ್, ಮೇ 1996 ಎಕ್ಸಾಮಿನಿಂಗ್ ದಿ ಡಿಪೆಂಡೆನ್ಸಿ ಇನ್ವರ್ಷನ್ ಪ್ರಿನ್ಸಿಪಲ್, ಡೆರೆಕ್ ಗ್ರೀರ್ ಡಿಐಪಿಃ ದಿ ಡಿಪೆಂಡೆನ್ಸಿ-ಇನ್ವರ್ಷನ್ ಪ್ರಿನ್ಸಿಪಲ್ ಡಿಐಪಿ ಇನ್ ದಿ ವೈಲ್ಡ್, ಬ್ರೆಟ್ ಎಲ್. ಶುಚೆರ್ಟ್, ಮೇ 2013 ಡಿಪೆಂಡೆನ್ಸಿ ಇನ್