Single Responsibility Principle(SRP)
Bu ilke, her sınıfın tek bir sorumluluğu olması gerektiğini belirtir. Bir sınıfın belirli bir işlevi yerine getirmesi gerektiğini ve değişmek için çok fazla nedeni olmaması gerektiğini vurgular.
Örnek: Kullanıcı bilgilerini yönetme ve e-posta bildirimleri gönderme.
class UserManager {
void createUser(UserData userData) {
// Logic for creating a user
}
}
class EmailService {
void sendEmail(EmailData emailData) {
// Logic for sending an email
}
}
Open/Closed Principle(OCP)
Bu ilke, mevcut kodu değiştirmek yerine yeni kod ekleyerek işlevselliği genişletmeyi teşvik eder.
Örnek: Bir e-ticaret uygulamasında farklı ödeme yöntemlerinin kullanılması.
abstract class PaymentProcessor {
abstract void processPayment();
}
class CreditCardPaymentProcessor extends PaymentProcessor {
void processPayment() {
// Logic for processing credit card payment
}
}
class PayPalPaymentProcessor extends PaymentProcessor {
void processPayment() {
// Logic for processing PayPal payment
}
}
Liskov Substitution Principle(LSP)
Bu ilke, türetilmiş bir sınıfın nesnelerinin, programın doğruluğunu etkilemeden temel sınıfın nesnelerinin yerine geçebileceğini iddia eder.
Örnek: Geometrik şekilleri yönetme.
abstract class Shape {
abstract double area();
}
class Rectangle extends Shape {
double area() {
// Logic for calculating area of rectangle
}
}
class Square extends Shape {
double area() {
// Logic for calculating area of square
}
}
Arayüz Ayırma İlkesi(ISP)
Bu ilke, sınıfları ihtiyaç duymadıkları yöntemleri uygulamaya zorlamaktan kaçınmak için arabirimleri daha küçük olanlara ayırmayı önerir.
Örnek: Verileri güncellemek ve görüntülemek için arayüzler.
interface UpdateableFeature {
void updateFeature();
}
interface DisplayableFeature {
void displayFeature();
}
Dependency Inversion Principle(DIP)
Bu ilke, bağımlılıkları yönetmek için bağımlılık enjeksiyonunun kullanılmasını önerir.
Örnek: Bağımlılıkları yönetmek için bağımlılık enjeksiyonunu kullanma.
class OrderProcessor {
private final DBConnection dbConnection;
private final EmailService emailService;
OrderProcessor(DBConnection dbConnection, EmailService emailService) {
this.dbConnection = dbConnection;
this.emailService = emailService;
}
}
SOLID İlkelerin uygulanmasının Java, projenizin özel amacına ve SOLID ve ile ilgili anlayışınıza göre esnek bir şekilde yapılması gerektiğini unutmayın Java.