ಲೇಖನಗಳು

ವಿನ್ಯಾಸ ಮಾದರಿಗಳು ಯಾವುವು: ಅವುಗಳನ್ನು ಏಕೆ ಬಳಸಬೇಕು, ವರ್ಗೀಕರಣ, ಸಾಧಕ-ಬಾಧಕಗಳು

ಸಾಫ್ಟ್‌ವೇರ್ ಎಂಜಿನಿಯರಿಂಗ್‌ನಲ್ಲಿ, ಸಾಫ್ಟ್‌ವೇರ್ ವಿನ್ಯಾಸದಲ್ಲಿ ಸಾಮಾನ್ಯವಾಗಿ ಸಂಭವಿಸುವ ಸಮಸ್ಯೆಗಳಿಗೆ ವಿನ್ಯಾಸ ಮಾದರಿಗಳು ಅತ್ಯುತ್ತಮ ಪರಿಹಾರಗಳಾಗಿವೆ.

ಅವು ಪೂರ್ವ ಯೋಜನೆಗಳಂತೆdefiನಿಮ್ಮ ಕೋಡ್‌ನಲ್ಲಿ ಮರುಕಳಿಸುವ ವಿನ್ಯಾಸ ಸಮಸ್ಯೆಯನ್ನು ಪರಿಹರಿಸಲು ನೀವು ಕಸ್ಟಮೈಸ್ ಮಾಡಬಹುದಾದ ನೈಟ್, ಪ್ರಯತ್ನಿಸಿದ ಮತ್ತು ಪರೀಕ್ಷಿಸಿದ ಪರಿಕರಗಳು.

ಅಂದಾಜು ಓದುವ ಸಮಯ: 6 ಮಿನುಟಿ

ವಿನ್ಯಾಸ ಮಾದರಿ ಎಂದರೇನು

ವಿನ್ಯಾಸ ಮಾದರಿಯು ನಾವು ಪ್ರಮಾಣಿತ ಕಾರ್ಯಗಳು ಅಥವಾ ಲೈಬ್ರರಿಗಳೊಂದಿಗೆ ಮಾಡಬಹುದಾದಂತೆ ನಾವು ನಮ್ಮ ಪ್ರೋಗ್ರಾಂಗೆ ನಕಲಿಸುವ ಮತ್ತು ಸೇರಿಸುವ ಕೋಡ್ ಅಲ್ಲ. ವಿನ್ಯಾಸ ಮಾದರಿಯು ಒಂದು ನಿರ್ದಿಷ್ಟ ಸಮಸ್ಯೆಯನ್ನು ಪರಿಹರಿಸುವ ಸಾಮರ್ಥ್ಯವನ್ನು ಹೊಂದಿರುವ ಸಾಮಾನ್ಯ ಪರಿಕಲ್ಪನೆಯಾಗಿದೆ. ಮೂಲಭೂತವಾಗಿ ಒಂದು ಮಾದರಿಯ ವಿವರಗಳನ್ನು ನಾವು ಅನುಸರಿಸಬಹುದು ಮತ್ತು ನಮ್ಮ ಕಾರ್ಯಕ್ರಮದ ನೈಜತೆಗೆ ಸರಿಹೊಂದುವ ಪರಿಹಾರವನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಬಹುದು.

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

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

ವಿನ್ಯಾಸದ ಮಾದರಿಯು ಯಾವುದರಿಂದ ಮಾಡಲ್ಪಟ್ಟಿದೆ?

ಹೆಚ್ಚಿನ ಮಾದರಿಗಳನ್ನು ಬಹಳ ಔಪಚಾರಿಕವಾಗಿ ವಿವರಿಸಲಾಗಿದೆ ಇದರಿಂದ ಜನರು ಅನೇಕ ಸಂದರ್ಭಗಳಲ್ಲಿ ಅವುಗಳನ್ನು ಪುನರುತ್ಪಾದಿಸಬಹುದು. ಮಾದರಿಯ ವಿವರಣೆಯಲ್ಲಿ ಇರುವ ಅಂಶಗಳನ್ನು ಕೆಳಗೆ ನೋಡೋಣ:

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

ಅವುಗಳನ್ನು ಏಕೆ ಬಳಸಬೇಕು?

ಪ್ರೋಗ್ರಾಮರ್ ವಿನ್ಯಾಸ ಮಾದರಿಗಳ ಅಸ್ತಿತ್ವವನ್ನು ತಿಳಿಯದೆ ಸಾಫ್ಟ್‌ವೇರ್ ಅನ್ನು ಅಭಿವೃದ್ಧಿಪಡಿಸಬಹುದು. ಅನೇಕರು ಮಾಡುತ್ತಾರೆ, ಮತ್ತು ಈ ಕಾರಣಕ್ಕಾಗಿ ಅವರು ಗೊತ್ತಿಲ್ಲದೆ ಕೆಲವು ಯೋಜನೆಗಳನ್ನು ಜಾರಿಗೆ ತರುತ್ತಾರೆ. ಆದರೆ ನಾವು ಅವುಗಳನ್ನು ಕಲಿಯಲು ಏಕೆ ಸಮಯ ಕಳೆಯಬೇಕು?

  • ವಿನ್ಯಾಸ ಮಾದರಿಗಳು ಒಂದು ಕಿಟ್ ಪ್ರಯತ್ನಿಸಿದ ಮತ್ತು ಪರೀಕ್ಷಿಸಿದ ಪರಿಹಾರಗಳು ಸಾಫ್ಟ್‌ವೇರ್ ವಿನ್ಯಾಸದಲ್ಲಿನ ಸಾಮಾನ್ಯ ಸಮಸ್ಯೆಗಳಿಗೆ. ನೀವು ಈ ಸಮಸ್ಯೆಗಳನ್ನು ಎಂದಿಗೂ ಎದುರಿಸದಿದ್ದರೂ ಸಹ, ಮಾದರಿಗಳನ್ನು ತಿಳಿದುಕೊಳ್ಳುವುದು ಇನ್ನೂ ಉಪಯುಕ್ತವಾಗಿದೆ ಏಕೆಂದರೆ ಇದು ವಸ್ತು-ಆಧಾರಿತ ವಿನ್ಯಾಸ ತತ್ವಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಎಲ್ಲಾ ರೀತಿಯ ಸಮಸ್ಯೆಗಳನ್ನು ಹೇಗೆ ಪರಿಹರಿಸಬೇಕೆಂದು ನಿಮಗೆ ಕಲಿಸುತ್ತದೆ.
  • ವಿನ್ಯಾಸ ಮಾದರಿಗಳು defiನೀವು ಮತ್ತು ನಿಮ್ಮ ತಂಡವು ಹೆಚ್ಚು ಪರಿಣಾಮಕಾರಿಯಾಗಿ ಸಂವಹನ ನಡೆಸಲು ಬಳಸಬಹುದಾದ ಸಾಮಾನ್ಯ ಭಾಷೆಯನ್ನು ಅವರು ರಚಿಸುತ್ತಾರೆ. "ಓಹ್, ಇದನ್ನು ಮಾಡಲು ಸಿಂಗಲ್‌ಟನ್ ಬಳಸಿ" ಎಂದು ನೀವು ಹೇಳಬಹುದು ಮತ್ತು ನಿಮ್ಮ ಸಲಹೆಯ ಹಿಂದಿನ ಕಲ್ಪನೆಯನ್ನು ಪ್ರತಿಯೊಬ್ಬರೂ ಅರ್ಥಮಾಡಿಕೊಳ್ಳುತ್ತಾರೆ. ನೀವು ಮಾದರಿ ಮತ್ತು ಅದರ ಹೆಸರನ್ನು ತಿಳಿದಿದ್ದರೆ ಸಿಂಗಲ್ಟನ್ ಎಂದರೇನು ಎಂದು ವಿವರಿಸುವ ಅಗತ್ಯವಿಲ್ಲ.

ವಿನ್ಯಾಸ ಮಾದರಿಗಳ ವರ್ಗೀಕರಣ

ವಿನ್ಯಾಸದ ಮಾದರಿಗಳು ಸಂಕೀರ್ಣತೆ, ವಿವರಗಳ ಮಟ್ಟ ಮತ್ತು ವಿನ್ಯಾಸಗೊಳಿಸಿದ ವ್ಯವಸ್ಥೆಯಾದ್ಯಂತ ಅನ್ವಯಿಸುವ ಪ್ರಮಾಣದಲ್ಲಿ ಭಿನ್ನವಾಗಿರುತ್ತವೆ.

ಸಾದೃಶ್ಯದ ಮೂಲಕ, ನಾವು ಕೆಲವು ಟ್ರಾಫಿಕ್ ದೀಪಗಳನ್ನು ಸ್ಥಾಪಿಸುವ ಮೂಲಕ ಅಥವಾ ಪಾದಚಾರಿಗಳಿಗೆ ಭೂಗತ ಹಾದಿಗಳೊಂದಿಗೆ ಸಂಪೂರ್ಣ ಬಹುಮಟ್ಟದ ಇಂಟರ್ಚೇಂಜ್ ಅನ್ನು ನಿರ್ಮಿಸುವ ಮೂಲಕ ಛೇದಕವನ್ನು ಸುರಕ್ಷಿತಗೊಳಿಸಬಹುದು.

ಅತ್ಯಂತ ಮೂಲಭೂತ, ಕಡಿಮೆ ಮಟ್ಟದ ಮಾದರಿಗಳನ್ನು ಹೆಚ್ಚಾಗಿ ಕರೆಯಲಾಗುತ್ತದೆ ಭಾಷಾವೈಶಿಷ್ಟ್ಯಗಳು . ಅವು ಸಾಮಾನ್ಯವಾಗಿ ಒಂದೇ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆಗೆ ಮಾತ್ರ ಅನ್ವಯಿಸುತ್ತವೆ.

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

ಇದಲ್ಲದೆ, ಎಲ್ಲಾ ಮಾದರಿಗಳನ್ನು ಅವುಗಳ ಪ್ರಕಾರ ವರ್ಗೀಕರಿಸಬಹುದು ಪ್ರಯತ್ನಿಸಿದ ಅಥವಾ ಉದ್ದೇಶ. ಮೂರು ಮುಖ್ಯ ವರ್ಗಗಳೆಂದರೆ:

ನಾವೀನ್ಯತೆ ಸುದ್ದಿಪತ್ರ
ನಾವೀನ್ಯತೆಯ ಪ್ರಮುಖ ಸುದ್ದಿಗಳನ್ನು ಕಳೆದುಕೊಳ್ಳಬೇಡಿ. ಇಮೇಲ್ ಮೂಲಕ ಅವುಗಳನ್ನು ಸ್ವೀಕರಿಸಲು ಸೈನ್ ಅಪ್ ಮಾಡಿ.
  • ಸೃಜನಾತ್ಮಕ ಮಾದರಿಗಳು ಅವು ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಕೋಡ್‌ನ ನಮ್ಯತೆ ಮತ್ತು ಮರುಬಳಕೆಯನ್ನು ಹೆಚ್ಚಿಸುವ ವಸ್ತು ರಚನೆಯ ಕಾರ್ಯವಿಧಾನಗಳನ್ನು ಒದಗಿಸುತ್ತವೆ.
  • ರಚನಾತ್ಮಕ ಮಾದರಿಗಳು ವಸ್ತುಗಳು ಮತ್ತು ವರ್ಗಗಳನ್ನು ದೊಡ್ಡ ರಚನೆಗಳಾಗಿ ಹೇಗೆ ಜೋಡಿಸುವುದು ಎಂಬುದನ್ನು ಅವರು ವಿವರಿಸುತ್ತಾರೆ, ಈ ರಚನೆಗಳನ್ನು ಹೊಂದಿಕೊಳ್ಳುವ ಮತ್ತು ಪರಿಣಾಮಕಾರಿಯಾಗಿರಿಸುತ್ತಾರೆ.
  • ವರ್ತನೆಯ ಮಾದರಿಗಳು ಅವರು ಪರಿಣಾಮಕಾರಿ ಸಂವಹನ ಮತ್ತು ವಸ್ತುಗಳ ನಡುವಿನ ಜವಾಬ್ದಾರಿಗಳ ನಿಯೋಜನೆಯೊಂದಿಗೆ ವ್ಯವಹರಿಸುತ್ತಾರೆ.

ಲಾರಾವೆಲ್‌ನಲ್ಲಿ ವಿನ್ಯಾಸ ಮಾದರಿಯ ಉದಾಹರಣೆ: ಮುಂಭಾಗ

ಮುಂಭಾಗ ಲೈಬ್ರರಿ, ಫ್ರೇಮ್‌ವರ್ಕ್ ಅಥವಾ ಯಾವುದೇ ಇತರ ಸಂಕೀರ್ಣ ವರ್ಗಗಳಿಗೆ ಸರಳೀಕೃತ ಇಂಟರ್ಫೇಸ್ ಅನ್ನು ಒದಗಿಸುವ ರಚನಾತ್ಮಕ ವಿನ್ಯಾಸದ ಮಾದರಿಯಾಗಿದೆ.

ಸಮಸ್ಯೆ

ಅತ್ಯಾಧುನಿಕ ಲೈಬ್ರರಿ ಅಥವಾ ಚೌಕಟ್ಟಿಗೆ ಸೇರಿದ ವಸ್ತುಗಳ ದೊಡ್ಡ ಗುಂಪಿನ ಆಧಾರದ ಮೇಲೆ ನಾವು ಸಾಫ್ಟ್‌ವೇರ್ ಕೆಲಸ ಮಾಡಬೇಕಾಗಿದೆ ಎಂದು ಭಾವಿಸೋಣ. ಸಾಮಾನ್ಯವಾಗಿ, ನಾವು ಈ ಎಲ್ಲಾ ವಸ್ತುಗಳನ್ನು ಪ್ರಾರಂಭಿಸಬೇಕು, ಅವಲಂಬನೆಗಳನ್ನು ಟ್ರ್ಯಾಕ್ ಮಾಡಬೇಕು, ಸರಿಯಾದ ಕ್ರಮದಲ್ಲಿ ವಿಧಾನಗಳನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಬೇಕು, ಇತ್ಯಾದಿ.

ಪರಿಣಾಮವಾಗಿ, ತರಗತಿಗಳ ವ್ಯವಹಾರ ತರ್ಕವು ಮೂರನೇ ವ್ಯಕ್ತಿಯ ತರಗತಿಗಳ ಅನುಷ್ಠಾನದ ವಿವರಗಳಿಗೆ ಬಿಗಿಯಾಗಿ ಜೋಡಿಸಲ್ಪಟ್ಟಿರುತ್ತದೆ, ಅವುಗಳನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು ಮತ್ತು ನಿರ್ವಹಿಸಲು ಕಷ್ಟವಾಗುತ್ತದೆ.

ಪರಿಹಾರ

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

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

ಉದಾಹರಣೆಗೆ, ಸಾಮಾಜಿಕ ಮಾಧ್ಯಮಕ್ಕೆ ಬೆಕ್ಕುಗಳೊಂದಿಗೆ ಸಣ್ಣ ತಮಾಷೆಯ ವೀಡಿಯೊಗಳನ್ನು ಅಪ್‌ಲೋಡ್ ಮಾಡುವ ಅಪ್ಲಿಕೇಶನ್ ವೃತ್ತಿಪರ ವೀಡಿಯೊ ಪರಿವರ್ತನೆ ಲೈಬ್ರರಿಯನ್ನು ಸಮರ್ಥವಾಗಿ ಬಳಸಬಹುದು. ಆದಾಗ್ಯೂ, ನಮಗೆ ನಿಜವಾಗಿಯೂ ಬೇಕಾಗಿರುವುದು ಒಂದೇ ವಿಧಾನವನ್ನು ಹೊಂದಿರುವ ವರ್ಗವಾಗಿದೆ encode(filename, format). ಅಂತಹ ವರ್ಗವನ್ನು ರಚಿಸಿದ ನಂತರ ಮತ್ತು ಅದನ್ನು ವೀಡಿಯೊ ಪರಿವರ್ತನೆ ಲೈಬ್ರರಿಗೆ ಸಂಪರ್ಕಿಸಿದ ನಂತರ, ನಾವು ನಮ್ಮ ಮೊದಲನೆಯದನ್ನು ಹೊಂದಿದ್ದೇವೆ facade.

ಉದಾಹರಣೆಗೆ, ಕಾಲ್ ಸೆಂಟರ್‌ನ ಟೆಲಿಫೋನ್ ಆಪರೇಟರ್ ಎ facade. ವಾಸ್ತವವಾಗಿ, ನಾವು ಟೆಲಿಫೋನ್ ಆರ್ಡರ್ ಮಾಡಲು ಅಂಗಡಿಯ ದೂರವಾಣಿ ಸೇವೆಗೆ ಕರೆ ಮಾಡಿದಾಗ, ನಿರ್ವಾಹಕರು ನಮ್ಮದೇ ಆಗಿರುತ್ತಾರೆ facade ಅಂಗಡಿಯ ಎಲ್ಲಾ ಸೇವೆಗಳು ಮತ್ತು ವಿಭಾಗಗಳ ಕಡೆಗೆ. ಆಪರೇಟರ್ ಆದೇಶ ವ್ಯವಸ್ಥೆ, ಪಾವತಿ ಗೇಟ್‌ವೇಗಳು ಮತ್ತು ವಿವಿಧ ವಿತರಣಾ ಸೇವೆಗಳಿಗೆ ಸರಳ ಧ್ವನಿ ಇಂಟರ್ಫೇಸ್ ಅನ್ನು ಒದಗಿಸುತ್ತದೆ.

PHP ಯಲ್ಲಿ ನಿಜವಾದ ಉದಾಹರಣೆ

ಯೋಚಿಸಿ ಮುಂಭಾಗ ಕೆಲವು ಸಂಕೀರ್ಣ ಉಪವ್ಯವಸ್ಥೆಗಳಿಗೆ ಸರಳ ಅಡಾಪ್ಟರ್ ಆಗಿ. Facade ಒಂದು ವರ್ಗದೊಳಗೆ ಸಂಕೀರ್ಣತೆಯನ್ನು ಪ್ರತ್ಯೇಕಿಸುತ್ತದೆ ಮತ್ತು ಸರಳ ಇಂಟರ್ಫೇಸ್ ಅನ್ನು ಬಳಸಲು ಇತರ ಅಪ್ಲಿಕೇಶನ್ ಕೋಡ್ ಅನ್ನು ಅನುಮತಿಸುತ್ತದೆ.

ಈ ಉದಾಹರಣೆಯಲ್ಲಿ, Facade ಕ್ಲೈಂಟ್ ಕೋಡ್‌ನಿಂದ YouTube API ಮತ್ತು FFmpeg ಲೈಬ್ರರಿಯ ಸಂಕೀರ್ಣತೆಯನ್ನು ಮರೆಮಾಡುತ್ತದೆ. ಡಜನ್ಗಟ್ಟಲೆ ತರಗತಿಗಳೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವ ಬದಲು, ಕ್ಲೈಂಟ್ ಮುಂಭಾಗದಲ್ಲಿ ಸರಳವಾದ ವಿಧಾನವನ್ನು ಬಳಸುತ್ತದೆ.

<?php

namespace RefactoringGuru\Facade\RealWorld;

/**
 * The Facade provides a single method for downloading videos from YouTube. This
 * method hides all the complexity of the PHP network layer, YouTube API and the
 * video conversion library (FFmpeg).
 */
class YouTubeDownloader
{
    protected $youtube;
    protected $ffmpeg;

    /**
     * It is handy when the Facade can manage the lifecycle of the subsystem it
     * uses.
     */
    public function __construct(string $youtubeApiKey)
    {
        $this->youtube = new YouTube($youtubeApiKey);
        $this->ffmpeg = new FFMpeg();
    }

    /**
     * The Facade provides a simple method for downloading video and encoding it
     * to a target format (for the sake of simplicity, the real-world code is
     * commented-out).
     */
    public function downloadVideo(string $url): void
    {
        echo "Fetching video metadata from youtube...\n";
        // $title = $this->youtube->fetchVideo($url)->getTitle();
        echo "Saving video file to a temporary file...\n";
        // $this->youtube->saveAs($url, "video.mpg");

        echo "Processing source video...\n";
        // $video = $this->ffmpeg->open('video.mpg');
        echo "Normalizing and resizing the video to smaller dimensions...\n";
        // $video
        //     ->filters()
        //     ->resize(new FFMpeg\Coordinate\Dimension(320, 240))
        //     ->synchronize();
        echo "Capturing preview image...\n";
        // $video
        //     ->frame(FFMpeg\Coordinate\TimeCode::fromSeconds(10))
        //     ->save($title . 'frame.jpg');
        echo "Saving video in target formats...\n";
        // $video
        //     ->save(new FFMpeg\Format\Video\X264(), $title . '.mp4')
        //     ->save(new FFMpeg\Format\Video\WMV(), $title . '.wmv')
        //     ->save(new FFMpeg\Format\Video\WebM(), $title . '.webm');
        echo "Done!\n";
    }
}

/**
 * The YouTube API subsystem.
 */
class YouTube
{
    public function fetchVideo(): string { /* ... */ }

    public function saveAs(string $path): void { /* ... */ }

    // ...more methods and classes...
}

/**
 * The FFmpeg subsystem (a complex video/audio conversion library).
 */
class FFMpeg
{
    public static function create(): FFMpeg { /* ... */ }

    public function open(string $video): void { /* ... */ }

    // ...more methods and classes... RU: ...дополнительные методы и классы...
}

class FFMpegVideo
{
    public function filters(): self { /* ... */ }

    public function resize(): self { /* ... */ }

    public function synchronize(): self { /* ... */ }

    public function frame(): self { /* ... */ }

    public function save(string $path): self { /* ... */ }

    // ...more methods and classes... RU: ...дополнительные методы и классы...
}


/**
 * The client code does not depend on any subsystem's classes. Any changes
 * inside the subsystem's code won't affect the client code. You will only need
 * to update the Facade.
 */
function clientCode(YouTubeDownloader $facade)
{
    // ...

    $facade->downloadVideo("https://www.youtube.com/watch?v=QH2-TGUlwu4");

    // ...
}

$facade = new YouTubeDownloader("APIKEY-XXXXXXXXX");
clientCode($facade);

Ercole Palmeri

ನಾವೀನ್ಯತೆ ಸುದ್ದಿಪತ್ರ
ನಾವೀನ್ಯತೆಯ ಪ್ರಮುಖ ಸುದ್ದಿಗಳನ್ನು ಕಳೆದುಕೊಳ್ಳಬೇಡಿ. ಇಮೇಲ್ ಮೂಲಕ ಅವುಗಳನ್ನು ಸ್ವೀಕರಿಸಲು ಸೈನ್ ಅಪ್ ಮಾಡಿ.

ಇತ್ತೀಚಿನ ಲೇಖನಗಳು

ವೀಮ್ ರಕ್ಷಣೆಯಿಂದ ಪ್ರತಿಕ್ರಿಯೆ ಮತ್ತು ಮರುಪಡೆಯುವಿಕೆಗೆ ransomware ಗಾಗಿ ಅತ್ಯಂತ ವ್ಯಾಪಕವಾದ ಬೆಂಬಲವನ್ನು ಹೊಂದಿದೆ

Veeam ನಿಂದ Coveware ಸೈಬರ್ ಸುಲಿಗೆ ಘಟನೆಯ ಪ್ರತಿಕ್ರಿಯೆ ಸೇವೆಗಳನ್ನು ಒದಗಿಸುವುದನ್ನು ಮುಂದುವರಿಸುತ್ತದೆ. ಕೋವ್‌ವೇರ್ ಫೋರೆನ್ಸಿಕ್ಸ್ ಮತ್ತು ಪರಿಹಾರ ಸಾಮರ್ಥ್ಯಗಳನ್ನು ನೀಡುತ್ತದೆ…

23 ಏಪ್ರಿಲ್ 2024

ಹಸಿರು ಮತ್ತು ಡಿಜಿಟಲ್ ಕ್ರಾಂತಿ: ಹೇಗೆ ಮುನ್ಸೂಚಕ ನಿರ್ವಹಣೆಯು ತೈಲ ಮತ್ತು ಅನಿಲ ಉದ್ಯಮವನ್ನು ಪರಿವರ್ತಿಸುತ್ತಿದೆ

ಸಸ್ಯ ನಿರ್ವಹಣೆಗೆ ನವೀನ ಮತ್ತು ಪೂರ್ವಭಾವಿ ವಿಧಾನದೊಂದಿಗೆ ಮುನ್ಸೂಚಕ ನಿರ್ವಹಣೆ ತೈಲ ಮತ್ತು ಅನಿಲ ವಲಯದಲ್ಲಿ ಕ್ರಾಂತಿಯನ್ನುಂಟು ಮಾಡುತ್ತಿದೆ.

22 ಏಪ್ರಿಲ್ 2024

ಯುಕೆ ಆಂಟಿಟ್ರಸ್ಟ್ ರೆಗ್ಯುಲೇಟರ್ GenAI ಮೇಲೆ ಬಿಗ್‌ಟೆಕ್ ಎಚ್ಚರಿಕೆಯನ್ನು ಎತ್ತುತ್ತದೆ

ಕೃತಕ ಬುದ್ಧಿಮತ್ತೆ ಮಾರುಕಟ್ಟೆಯಲ್ಲಿ ಬಿಗ್ ಟೆಕ್ ನ ವರ್ತನೆಯ ಬಗ್ಗೆ UK CMA ಎಚ್ಚರಿಕೆ ನೀಡಿದೆ. ಅಲ್ಲಿ…

18 ಏಪ್ರಿಲ್ 2024

ಕಾಸಾ ಗ್ರೀನ್: ಇಟಲಿಯಲ್ಲಿ ಸುಸ್ಥಿರ ಭವಿಷ್ಯಕ್ಕಾಗಿ ಶಕ್ತಿ ಕ್ರಾಂತಿ

ಕಟ್ಟಡಗಳ ಶಕ್ತಿಯ ದಕ್ಷತೆಯನ್ನು ಹೆಚ್ಚಿಸಲು ಯುರೋಪಿಯನ್ ಯೂನಿಯನ್ ರೂಪಿಸಿದ "ಕೇಸ್ ಗ್ರೀನ್" ತೀರ್ಪು, ಅದರ ಶಾಸಕಾಂಗ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಮುಕ್ತಾಯಗೊಳಿಸಿದೆ…

18 ಏಪ್ರಿಲ್ 2024

ನಿಮ್ಮ ಭಾಷೆಯಲ್ಲಿ ಹೊಸತನವನ್ನು ಓದಿ

ನಾವೀನ್ಯತೆ ಸುದ್ದಿಪತ್ರ
ನಾವೀನ್ಯತೆಯ ಪ್ರಮುಖ ಸುದ್ದಿಗಳನ್ನು ಕಳೆದುಕೊಳ್ಳಬೇಡಿ. ಇಮೇಲ್ ಮೂಲಕ ಅವುಗಳನ್ನು ಸ್ವೀಕರಿಸಲು ಸೈನ್ ಅಪ್ ಮಾಡಿ.

ನಮ್ಮನ್ನು ಅನುಸರಿಸಿ

ಟ್ಯಾಗ್