Arayüzleri kod çoğaltılması ile DDD çözmek mi?

2 Cevap java

AccountController aynı zamanda BaseAccount ve BaseController uzatmak olamaz. Ben bütün BaseAccount veya BaseController yöntemleri boş yaparsanız, ben bir arayüze sahip olabilir, ama ben iki farklı yerlerde, bu arabirim uygulamak durumunda yani, ben iki farklı yerde bir yöntemi uygulamak için bir sözleşme, ben kod çoğaltılmış olacaktır olun. Arayüzleri kod çoğaltılması ile DDD çözmek mi?

interface A {
    function doStuff() {
    }
}

class B implements A {
    function doStuff() {
        // a code
    }
}

class C implements A {
    function doStuff() {
        // the same code!!!
    }
}

2 Cevap

Biraz son sentance ile karıştırılmamalıdır, ancak birden çok devralma istiyorsanız o zaman bunu yapmak gerekir:

AccountController BaseAccount uzanır ve BaseAccount BaseController uzanır

BaseController
  |
BaseAccount
  |
AccountController

Bu yöntemi kullanarak $ this kullanarak AccountController gelen BaseAccount ve BaseController üye tüm işlevlere erişim sağlayacaktır.

DDD sorun uygulama belirsizlik ile ilgili, çünkü arabirimleri DDD sorunu çözmek. Arayüzler uygulamaları içermez, böylece tek bir sınıf ve çoklu arabirimler devralan eğer o belirsizlik alınamıyor.

Eğer BaseController ve BaseAccount aynı imzayla yöntemleri varsa anlatılan durumda, DDD alabilir. Eğer sadece bir bu devralan Eğer bu sorunu alınamıyor.

Bir şey Hesap hem bir Denetleyicisi yapmak istiyorum Belki neden yeniden gözden. Eğer çok fazla yapmak bir sınıf yapıyoruz gibi bana biraz geliyor.

Bir kenara, ben böyle bir şey yaptığınızda onu daha doğal hale getirir, çünkü "Controller" yerine "BaseController" gibi isimler kullanarak tavsiye ederim:

Controller con = ControllerFactory.Create();

aksine

BaseController con = ControllerFactory.Create();

Bu örnekte, "con" mutlaka bir BaseController değildir. Herhangi Kontrolör alt sınıfı olabilir.