Single Responsibility Principle(SRP)
ਇਹ ਸਿਧਾਂਤ ਦੱਸਦਾ ਹੈ ਕਿ ਹਰੇਕ ਵਰਗ ਦੀ ਇੱਕ ਜ਼ਿੰਮੇਵਾਰੀ ਹੋਣੀ ਚਾਹੀਦੀ ਹੈ। ਇਹ ਇਸ ਗੱਲ 'ਤੇ ਜ਼ੋਰ ਦਿੰਦਾ ਹੈ ਕਿ ਇੱਕ ਕਲਾਸ ਨੂੰ ਇੱਕ ਖਾਸ ਫੰਕਸ਼ਨ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ ਅਤੇ ਬਦਲਣ ਦੇ ਬਹੁਤ ਸਾਰੇ ਕਾਰਨ ਨਹੀਂ ਹੋਣੇ ਚਾਹੀਦੇ।
ਉਦਾਹਰਨ: ਉਪਭੋਗਤਾ ਜਾਣਕਾਰੀ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰਨਾ ਅਤੇ ਈਮੇਲ ਸੂਚਨਾਵਾਂ ਭੇਜਣਾ।
class UserManager {
createUser(userData) {
// Logic for creating a user
}
}
class EmailService {
sendEmail(emailData) {
// Logic for sending an email
}
}
Open/Closed Principle(OCP)
ਇਹ ਸਿਧਾਂਤ ਮੌਜੂਦਾ ਕੋਡ ਨੂੰ ਸੋਧਣ ਦੀ ਬਜਾਏ ਨਵਾਂ ਕੋਡ ਜੋੜ ਕੇ ਕਾਰਜਕੁਸ਼ਲਤਾ ਵਧਾਉਣ ਨੂੰ ਉਤਸ਼ਾਹਿਤ ਕਰਦਾ ਹੈ।
ਉਦਾਹਰਨ: ਇੱਕ ਈ-ਕਾਮਰਸ ਐਪਲੀਕੇਸ਼ਨ ਵਿੱਚ ਵੱਖ-ਵੱਖ ਭੁਗਤਾਨ ਵਿਧੀਆਂ ਨੂੰ ਸੰਭਾਲਣਾ।
class PaymentProcessor {
processPayment() {
// Common logic for payment processing
}
}
class CreditCardPaymentProcessor extends PaymentProcessor {
processPayment() {
// Logic for processing credit card payment
}
}
class PayPalPaymentProcessor extends PaymentProcessor {
processPayment() {
// Logic for processing PayPal payment
}
}
Liskov Substitution Principle(LSP)
ਇਹ ਸਿਧਾਂਤ ਦਾਅਵਾ ਕਰਦਾ ਹੈ ਕਿ ਪ੍ਰੋਗ੍ਰਾਮ ਦੀ ਸ਼ੁੱਧਤਾ ਨੂੰ ਪ੍ਰਭਾਵਤ ਕੀਤੇ ਬਿਨਾਂ ਇੱਕ ਪ੍ਰਾਪਤ ਸ਼੍ਰੇਣੀ ਦੀਆਂ ਵਸਤੂਆਂ ਨੂੰ ਅਧਾਰ ਸ਼੍ਰੇਣੀ ਦੀਆਂ ਵਸਤੂਆਂ ਲਈ ਬਦਲਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ।
ਉਦਾਹਰਨ: ਜਿਓਮੈਟ੍ਰਿਕ ਆਕਾਰਾਂ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰਨਾ।
class Shape {
area() {
// Common logic for calculating area
}
}
class Rectangle extends Shape {
area() {
// Logic for calculating area of rectangle
}
}
class Square extends Shape {
area() {
// Logic for calculating area of square
}
}
Interface Segregation Principle(ISP)
ਇਹ ਸਿਧਾਂਤ ਕਲਾਸਾਂ ਨੂੰ ਉਹਨਾਂ ਤਰੀਕਿਆਂ ਨੂੰ ਲਾਗੂ ਕਰਨ ਲਈ ਮਜਬੂਰ ਕਰਨ ਤੋਂ ਬਚਣ ਲਈ ਇੰਟਰਫੇਸ ਨੂੰ ਛੋਟੇ ਵਿੱਚ ਤੋੜਨ ਦੀ ਸਲਾਹ ਦਿੰਦਾ ਹੈ ਜਿਨ੍ਹਾਂ ਦੀ ਉਹਨਾਂ ਨੂੰ ਲੋੜ ਨਹੀਂ ਹੈ।
ਉਦਾਹਰਨ: ਡੇਟਾ ਨੂੰ ਅੱਪਡੇਟ ਕਰਨ ਅਤੇ ਪ੍ਰਦਰਸ਼ਿਤ ਕਰਨ ਲਈ ਇੰਟਰਫੇਸ।
class UpdateableFeature {
updateFeature() {
// Logic for updating feature
}
}
class DisplayableFeature {
displayFeature() {
// Logic for displaying feature
}
}
Dependency Inversion Principle(DIP)
ਇਹ ਸਿਧਾਂਤ ਨਿਰਭਰਤਾ ਦੇ ਪ੍ਰਬੰਧਨ ਲਈ ਨਿਰਭਰਤਾ ਇੰਜੈਕਸ਼ਨ ਦੀ ਵਰਤੋਂ ਕਰਨ ਦਾ ਸੁਝਾਅ ਦਿੰਦਾ ਹੈ।
ਉਦਾਹਰਨ: ਨਿਰਭਰਤਾ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰਨ ਲਈ ਨਿਰਭਰਤਾ ਇੰਜੈਕਸ਼ਨ ਦੀ ਵਰਤੋਂ ਕਰਨਾ।
class OrderProcessor {
constructor(dbConnection, emailService) {
this.dbConnection = dbConnection;
this.emailService = emailService;
}
}
ਯਾਦ ਰੱਖੋ ਕਿ SOLID ਵਿੱਚ ਸਿਧਾਂਤਾਂ ਨੂੰ ਲਾਗੂ ਕਰਨਾ JavaScript ਤੁਹਾਡੇ ਪ੍ਰੋਜੈਕਟ ਦੇ ਖਾਸ ਉਦੇਸ਼ ਅਤੇ SOLID ਅਤੇ ਅਤੇ ਦੀ ਤੁਹਾਡੀ ਸਮਝ ਦੇ ਅਧਾਰ ਤੇ ਲਚਕਦਾਰ ਤਰੀਕੇ ਨਾਲ ਕੀਤਾ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ JavaScript ।