Kötü soru başlığı için özür dilerim.OOD: hesaplanan değerleri temsil eden çoklu nesneler
Temel olarak sadece bir başlangıç tarihi ve bitiş tarihi içeren DateRange sınıfına sahip olduğumu varsayalım.
Soruma Soru: "Bu Hafta", "Geçmiş İki Hafta", "Son Ay" ve "Bu Çeyrek" gibi hesaplanan tarih aralıklarını nasıl temsil edebilirim, böylece birden fazla müşteri bu hesaplanmış tarih aralıklarını kullanabilir tutarlı bir şekilde? Yani, "Bu Hafta" nın ne olduğunu bilmesi gereken birden fazla sınıfın birden fazla nesnesine sahip olacağım.
Onları DateRange içine yapılandırabilirim, ancak bu iyi bir çözüm gibi görünmüyor çünkü daha fazla eklenebilir veya zaman içinde eski olabilir ... aslında bu kesinlikle olur. DateRange özetini yapabilirim ve genişletebilirim, ama sonra bir grup minik sınıfa sahip olacağım. Bu tarihleri hesaplayan bir çeşit statik yardımcı sınıf oluşturabilirim. Bu probleme nasıl yaklaşırsın?
dateRange = new DateRange (RangeEnum.THISWEEK));
veya
Daterange = yeni ThisWeek();
veya
Daterange = DateHelper.getThisWeek();
veya
? Bu şeye ek bir anahtar atmak için, "1 Mayıs 2008 tarihini içeren çalışma haftası" gibi bir aralığı temsil etmem gerektiğini de varsayalım. Bunu söyledikten sonra, yardımcı sınıfa doğru eğildim ... ... bu sadece garip yöntemlerin büyük bir yumruğu olan garip hissettiriyor.
mantıklı Yani. Esasen "yardımcı sınıf" fikri sadece DateRange sınıfına entegre edilmiştir. DateRange, bu zorunluluk gibi iş gereksinimlerini çok fazla bilmemesi gerektiğini bir yandan hissettiriyor ... diğer yandan, basit ve büyük bir anlaşma değil. – Boden
@Boden: Bu, DateRange sınıfını bir iş nesnesine mi yoksa sistem altyapısı nesnesine mi aldığınıza bağlı olduğunu tahmin ediyorum. Finansal sistemlerde, ThisWeek, Month veya Quarter'ı oluşturan değişkenler değişebilir, bu yüzden tanımları bir işletme nesnesinde olmalıydı. – AnthonyWJones