Bunu nasıl cepten tasarım sorunu çözmek için?

0 Cevap php

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ı?

0 Cevap