Garip çoklu kalıtım zarif alternatifler

0 Cevap php

Ben bu bir soru olduğunu söyleyemeyiz, ancak bir görüş talebi daha fazla ve eminim diğerleri değilim bu konuyu açıklığa kavuşturulması yararlanabilir.

İşte benim pratik böyledir:

Ben DataExchangeService adlı bir soyut sınıf ve (bu benim MVC Framework baz CONTROLLER sınıf) bu bir uzatmak alt sınıfların bir şey var. Veri tanımını (Kullanıcılar, Tipleri, Kesitler vb) işlemek yönetim modülleri hepsi eklemek, düzenlemek, silmek, çoğu durumda% 100 benzerlik ile liste yöntemleri var. Ben çünkü sadece arama ve değiştirme kullanarak bunları çoğaltmak olduğunu biliyoruz. Şimdi bir şey bu yüzden REZİL yöntemleri gerekmez yeterli olgu vardır benim DateExchangeService alt sınıflar verileri işlemek tanımı değildir.

Çoklu kalıtım bu REZİL yöntemleri ve başka bir sınıfta davranışlarını tanımlamak ve gerektiğinde bu iki sınıfları uzatmak istiyorum, ama gerçekten zor şeyler olduğunu düşünüyorum ve ben bunu kullanmıyorum (+ PHP de bu özelliğe sahip değildir). Peki en iyi uygulama olurdu?

İşte benim aklıma yaklaşımlar:

CASE A

  1. Parametrelenmişse tüm bu yöntemler vardır bir CRUDHandler sınıf tanımlayın.

  2. Gerektiğinde CRUDHandler türü bir özellik oluşturmak ve aynı zamanda bu yöntemleri kullanmak için beni zorlar REZİL arabirimini uygular.

  3. Ben böyle bir şey eklemek uygulanan yöntemlerin organları:

public function edit($params) {
    $this->params = $params;
    $this->CRUDHandler->handle("edit", $this);
}

(PHP bu __call() sihirli yöntemi ile yapılabilir.)

CASE B

  1. Baz DataExchangeService uzatılması gibi sınıf CRUDHandler tanımlayın.

  2. When defining a specific type of DataExchangeService (for example UsersExchangeService) instead of extending DataExchangeService you extend CRUDHandler, this way you get all you want when it is needed.

Yani, bu MultiInheritance yaklaşım üzerinde herhangi başka görüşler vardır?

Teşekkürler

0 Cevap