almadan Delphi Arabulucu desen uygulamak, ancak Delphi derleyici dairesel başvurular işleyemez gereklidir.<p></p> Ben Delphi Arabulucu desen uygulamak istiyorum ... dairesel referanslar
'Tasarım Kalıpları' orijinal GOF diyagramı bakıldığında, Aracı her çalışan bir referans vardır, ama meslektaşı objelerin çoğu geri Arabulucu bir referans vardır.
çoğu dildeBu değil bir sorun, ama benim Delphi derleyici bana
this approach, arayüzleri kullanarak, herhangi bir kullanım olurdu 'olarak ... F2047 Dairesel birimi başvuru' veriyor? Ben
[çözümün Özeti]
Hemen kabul cevabı özetlemek Delphi 2010 kullanıyorum(karmaşık gibi görünüyor): Dairesel başvurular izin dillerde, soyut Arabulucu sınıfı atlayabilirsiniz (GoF'un "Uygulama" bölümünde anlatıldığı gibi, sayfa 278). Eğer soyut Arabulucu sınıfında olmadan Delphi Arabulucu uygulamak tek yolu bir Birimi tüm Sınıfları sahip olmaktır.
Aksi takdirde, beton alt sınıfta ek olarak ekstra bir soyut Arabulucu temel sınıfını gerekir. Üç Birimleri için
Kişisel Kullanımları maddeleri şu şekilde görünecektir:
ConcreteColleage1 ConcreateColleague1
Arabulucu
yok dairesel başvurular (ya kullanmaz),
ConcreteMediator Arabulucu kullanır arabulucu kullanır!
GoF tarafından Tasarım Kalıpları kitabında açıklandığı gibi Aracı modeline başvuruyorum. Özellikle, sayfa 274'teki şema. 'AButton', 'aFontDialogDirector' için bir referansa sahiptir ve tersine, 'aFontDialogDirector', 'aButton' için bir referansa sahiptir. Yani Delphi'de, bu iki sınıfın aynı Birim içerisinde olması gerekir. – awmross
Cevabınızı daha dikkatli okuduktan sonra, şimdi bunun doğru olduğunu görüyorum. Bir Birimde temel bir Mediator sınıfı oluşturmalı ve bunu başka bir Birimde sınıflandırmam gerekiyor. Eğer cevabınızı düzenlerseniz, aşağı çekimi bir vahiyle değiştirebilirim :-) – awmross