Ben 3 bileşeni vardır bir sistem var:
Report - Bir rapor aslında çıktıda ne içerdiğini tanımlamak için mantığı içerir. Örnekler TopMerchantsReport
ve LowestTransactionsReport
içerir.
ReportRunner - raporları sadece veri toplama ve üretme yapmak gibi, bu sınıf raporları tüm çalışan ve (örneğin, e-posta yoluyla) sonuçları dağıtmaktan sorumlu değildir. Her bir Report
, kendi ReportRunner
vardır.
ReportProfile - Belirli bir rapor için bir kullanıcının ayarlarını içeren bir veritabanı tablosunun Nesne aynası.
A Report
gibi olmak Digestable
ve / veya birden fazla olarak takılabilir davranışları sahip olabilir, Schedulable
. PHP herhangi Katmalar sahip olduğundan, bu en iyi dekoratör model ile temsil edilir.
Benim asıl sorun, bu 3 nesnelerin her modifiye davranışını ihtiyacı olduğu zaman Report
gibi bir şey ile süslüdür ilişkili Schedulable
. Örneğin, ReportRunner
, şimdi sadece planlanmış raporları toplamak için ve ReportProfile
a isScheduled()
yöntem yararlanacak gerekmektedir.
Ben 3 sınıfları süslemek zorunda kullanıcıyı zorlamak istemiyorum. Sadece bu hata eğilimli olduğunu, ama sonra her davranış (her sınıf için bir tane) 3 dekoratörler oluşturmak gerekiyor. Başka ne çözüm var mı?