Konu: İş Kurallarının Modellenmesi Sorun: Bir kitapçı uygulamasında, kitap başlığı gibi temel iş öğeleri için uygun bir model ve iş kuralları eksikliği, büyük sorunlara yol açabilir. Özellikle, başlık gibi temel öğeler üzerine inşa edilen onlarca özellik, iş kurallarına bağlıdır.
Mevcut Durum: Şu anda, kitap başlığı sadece bir string olarak modelleniyor ve bu, iş kurallarını uygulamak için yetersiz. Örneğin, null veya boş string kontrolü gibi basit koruma mekanizmaları, büyük/küçük harf farklılıkları, dil bilgisi kuralları veya kötü niyetli girdilere karşı koruma gibi karmaşık kuralları ele alamaz.
Çözüm: İş kurallarını uygulamak için Rules Design Pattern (Kurallar Tasarım Deseni) kullanılmalıdır. Bu desen, her bir iş kuralını ayrı bir sınıf olarak uygular ve bu kuralları birleştirerek kullanır.
Kitap Başlığı Nesnesi: Kitap başlığı, artık bir string değil, kendi türüne sahip bir nesne olarak modellenir.
Kuralların Uygulanması: Her bir kural, başlığın belirli bir yönünü kontrol eder ve gerekirse düzeltme yapar. Örneğin, başlığın başında veya sonunda boşluk olmaması, büyük/küçük harf kurallarına uygun olması gibi.
Bileşik Kurallar: Birden fazla kural, Composite Design Pattern kullanılarak birleştirilir. Bu, tüm kuralların tek bir çağrıyla uygulanmasını sağlar.
Bağımlılıklar: Bazı kurallar, örneğin kullanıcının rolüne bağlı olarak farklı davranabilir. Bu tür kurallar, uygulamanın farklı katmanlarında (örneğin, web katmanında) uygulanabilir.
Sonuç: Avantajlar: Bu yaklaşım, iş kurallarının merkezi bir şekilde yönetilmesini sağlar. Ayrıca, kuralların tekrar kullanılabilir ve test edilebilir olmasını kolaylaştırır.
Karmaşıklık: Bazı kurallar (örneğin, başlık büyük/küçük harf kuralları) oldukça karmaşık olabilir ve bu, uygulama içinde bir alt proje gibi ele alınmalıdır.
Esneklik: Kurallar, uygulamanın farklı katmanlarında uygulanabilir ve bağımlılıklar (örneğin, kullanıcı bilgisi) kolayca entegre edilebilir.