JavaScript ನಲ್ಲಿ Factory Functions ಮತ್ತು Constructor Functions
ಒಂದೊಂದಾಗಿ ಆಬ್ಜೆಕ್ಟ್ಗಳನ್ನು (objects) ರಚಿಸುವುದು ಒಂದು ತಪ್ಪು.
ನೀವು ಪ್ರತಿಯೊಬ್ಬ ಬಳಕೆದಾರ ಅಥವಾ ಸಹಪಾಠಿಗರಿಗಾಗಿ ಮ್ಯಾನುಯಲ್ ಆಬ್ಜೆಕ್ಟ್ ಅನ್ನು ಬರೆದರೆ, ನೀವು ಕೋಡ್ ಅನ್ನು ಪುನರಾವರ್ತಿಸುತ್ತೀರಿ. ನಿಮ್ಮ ಬಳಿ 100 ಬಳಕೆದಾರರಿದ್ದರೆ, ನೀವು ಒಂದೇ ಲಾಜಿಕ್ ಅನ್ನು 100 ಬಾರಿ ಬರೆಯಬೇಕಾಗುತ್ತದೆ. ಇದು ಬಗ್ಗಳಿಗೆ (bugs) ಕಾರಣವಾಗುತ್ತದೆ. ನೀವು ನಂತರ ಅಚಾನಕ್ಕಾಗಿ ಯಾವುದಾದರೂ ಪ್ರಾಪರ್ಟಿಯನ್ನು (property) ಬದಲಾಯಿಸಬಹುದು ಮತ್ತು ಇದರಿಂದ ನಿಮ್ಮ ಅಪ್ಲಿಕೇಶನ್ ಕೆಟ್ಟುಹೋಗಬಹುದು.
ಸ್ವಚ್ಛವಾದ ಕೋಡ್ ಬರೆಯಲು ಬದಲಾಗಿ ಈ ಎರಡು ಪ್ಯಾಟರ್ನ್ಗಳನ್ನು (patterns) ಬಳಸಿ.
- Factory Functions
ಒಂದು ನೈಜ ಫ್ಯಾಕ್ಟರಿಯನ್ನು ನೆನಪಿಸಿಕೊಳ್ಳಿ. ಅಲ್ಲಿ ಕಚ್ಚಾ ವಸ್ತುಗಳು ಒಳಗೆ ಹೋಗುತ್ತವೆ ಮತ್ತು ಸಿದ್ಧಪಡಿಸಿದ ಉತ್ಪನ್ನ ಹೊರಗೆ ಬರುತ್ತದೆ.
ಒಂದು factory function ಪ್ಯಾರಾಮೀಟರ್ಗಳನ್ನು (parameters) ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ ಮತ್ತು ಹೊಸ ಆಬ್ಜೆಕ್ಟ್ ಅನ್ನು ರಿಟರ್ನ್ (return) ಮಾಡುತ್ತದೆ.
Example:
function classFactory(name) {
return {
reply() {
return `${name} is present`
}
}
}
ಪ್ರಯೋಜನಗಳು:
- ನೀವು ಲಾಜಿಕ್ ಅನ್ನು ಒಮ್ಮೆ ಮಾತ್ರ ಬರೆಯುತ್ತೀರಿ.
- ಪ್ರತಿಯೊಂದು ಹೊಸ ಆಬ್ಜೆಕ್ಟ್ಗಾಗಿ ನೀವು ಅದೇ ಫಂಕ್ಷನ್ ಅನ್ನು ಮರುಬಳಕೆ ಮಾಡಬಹುದು.
- ಡೇಟಾ ಸುರಕ್ಷಿತವಾಗಿರುತ್ತದೆ. ಹೆಸರು ಫಂಕ್ಷನ್ ಸ್ಕೋಪ್ನಲ್ಲೇ (function scope) ಇರುತ್ತದೆ. ನೀವು ಹೊರಗಿನಿಂದ ಅದನ್ನು ಅಚಾನಕ್ಕಾಗಿ ಬದಲಾಯಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ.
- Constructor Functions
Constructor functions ಕೂಡ ಆಬ್ಜೆಕ್ಟ್ಗಳನ್ನು ರಚಿಸುತ್ತವೆ. ಇವು "new" ಕೀವರ್ಡ್ ಮತ್ತು "this" ಕೀವರ್ಡ್ ಅನ್ನು ಬಳಸುತ್ತವೆ. ರೂಢಿಯ ಪ್ರಕಾರ (convention), ಇವುಗಳನ್ನು ಕ್ಯಾಪಿಟಲ್ ಅಕ್ಷರದಿಂದ ಪ್ರಾರಂಭಿಸಬೇಕು.
Example:
function Classmate(name) {
this.name = name
this.reply = function() {
return `${this.name} is present`
}
}
ನೀವು "new" ಬಳಸಿದಾಗ, JavaScript ನಿಮಗಾಗಿ ಕೆಲಸ ಮಾಡುತ್ತದೆ:
- ಇದು ಹೊಸ ಆಬ್ಜೆಕ್ಟ್ ಅನ್ನು ರಚಿಸುತ್ತದೆ.
- ಇದು ಅದನ್ನು "this" ಗೆ ನಿಯೋಜಿಸುತ್ತದೆ (assign).
- ಇದು ಆಬ್ಜೆಕ್ಟ್ ಅನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ರಿಟರ್ನ್ ಮಾಡುತ್ತದೆ.
ನಿಮಗೆ "return" ಸ್ಟೇಟ್ಮೆಂಟ್ನ ಅಗತ್ಯವಿಲ್ಲ.
Scaling your code (ನಿಮ್ಮ ಕೋಡ್ ಅನ್ನು ಸ್ಕೇಲ್ ಮಾಡುವುದು)
ಹೆಚ್ಚಿನ ಪ್ರಮಾಣದ ಡೇಟಾವನ್ನು ನಿರ್ವಹಿಸಲು ನೀವು ಈ ಪ್ಯಾಟರ್ನ್ಗಳನ್ನು ಅರೇಗಳೊಂದಿಗೆ (arrays) ಸಂಯೋಜಿಸಬಹುದು. ಪ್ರತಿಯೊಂದು ಹೆಸರನ್ನು ಟೈಪ್ ಮಾಡುವ ಬದಲು, map ಫಂಕ್ಷನ್ ಬಳಸಿ.
Example:
const names = ['Kali', 'Andrew', 'Pearl', 'Percy']
const classmates = names.map(name => new Classmate(name))
ಈಗ ಬಳಕೆಗೆ ಸಿದ್ಧವಾಗಿರುವ ಆಬ್ಜೆಕ್ಟ್ಗಳ ಪಟ್ಟಿ ನಿಮ್ಮ ಬಳಿ ಇದೆ.
ಸಾರಾಂಶ:
- ಪುನರಾವರ್ತನೆಯನ್ನು ತಪ್ಪಿಸಲು ಮ್ಯಾನುಯಲ್ ಆಬ್ಜೆಕ್ಟ್ ರಚನೆಯನ್ನು ತಪ್ಪಿಸಿ.
- ಲಾಜಿಕ್ ಅನ್ನು ಎನ್ಕ್ಯಾಪ್ಸುಲೇಟ್ (encapsulate) ಮಾಡಲು ಮತ್ತು ಡೇಟಾವನ್ನು ರಕ್ಷಿಸಲು Factory Functions ಬಳಸಿ.
- ಸ್ವಯಂಚಾಲಿತ ಆಬ್ಜೆಕ್ಟ್ ರಚನೆಗಾಗಿ "new" ಕೀವರ್ಡ್ ಅನ್ನು ಬಳಸಲು Constructor Functions ಬಳಸಿ.
- ಯಾವಾಗಲೂ ನಿಮ್ಮ ಲಾಜಿಕ್ ಅನ್ನು ಒಮ್ಮೆ ಬರೆಯಿರಿ ಮತ್ತು ಅದನ್ನು ಎಲ್ಲೆಡೆ ಮರುಬಳಕೆ ಮಾಡಿ.
ಮೂಲ (Source): https://dev.to/pearlodi/factory-functions-and-constructor-functions-in-javascript-lmb