Proje: UstaPlatform - Şehrin Uzmanlık Platformu
Bu proje, Nesne Yönelimli Programlama ve İleri C# dersi kapsamında, Arcadia şehrindeki uzmanlarla vatandaşları buluşturan dinamik ve genişletilebilir bir platform olarak geliştirilmiştir. Projenin ana odağı, SOLID prensiplerine uygun bir Plug-in (Eklenti) Mimarisi kurmaktır.
Çalışma Prensibi Proje derlendikten sonra, ana uygulamanın (UstaPlatform.App.exe) bulunduğu klasörde plugins adında bir klasör oluşturulur. Fiyatlandırmayı etkileyecek olan kuralların .dll dosyaları bu klasörün içine atılır. Program çalıştığında, plugins klasöründeki tüm kuralları otomatik olarak bularak hesaplama yapar.
Tasarım Mimarim Projenin mimarisi, kod değişikliği yapmadan sisteme yeni özellikler eklemeyi sağlayan Açık/Kapalı Prensibi üzerine kurulmuştur.
Plug-in Mimarisi Bu dinamik yapı şu şekilde çalışır:
IPricingRule Arayüzü: Tüm fiyat kurallarının uyması gereken ortak bir "sözleşme" tanımlandı. Her kural bu arayüzü uygulamak zorundadır.
Bağımsız Kural DLL'leri: Her fiyat kuralı (HaftasonuEkUcreti, SadakatIndirimi vb.) kendi projesinde geliştirilerek bağımsız birer .dll dosyası oluşturur.
FiyatlamaMotoru (PricingEngine): Ana motor, başlangıçta plugins klasörünü C# Reflection teknolojisi ile tarar. IPricingRule arayüzünü uygulayan tüm sınıfları bulur, listesine ekler ve fiyat hesaplaması sırasında bu listedeki bütün kuralları sırayla çalıştırır.
Bu tasarım sayesinde, ana programa hiç dokunmadan, sadece klasöre yeni bir .dll dosyası atarak sistemin davranışını genişletmek mümkün olmaktadır.