Nasıl arayüzleri birden çok devralma gereğini yerine mevcut sınıflar olabilir | Netgez.com
SORU
15 ŞUBAT 2011, Salı


Nasıl arayüzleri birden çok devralma gereğini yerine mevcut sınıflar olabilir

Özür dilerim bu yazı için öncelikle.... Birden çok devralma tartışıyor olan stackoverflow birçok birçok mesaj olduğunu biliyorum. Ama zaten Java çoklu kalıtım desteklemez ve arabirim kullanarak bir alternatif olması gerektiğini biliyorum. Ama benim ikilem görmüyorum:

Çok çok büyük ve karmaşık bir aracı Java ile yazılmış üzerinde değişiklikler yapmak zorundayım. Bu araç, bir veri yapısına bağlı üye bir hiyerarşi ile birçok farklı sınıf nesneleri ile inşa edilmiştir. Neyse

  • Bir Dersim var birden çok yöntem vardır ve bir nesne etiketi nesnenin sınıfına baÄŸlı olarak verir, Tagged. Üyeleri ve statik deÄŸiÅŸkenlere ihtiyaç duyar.
  • Ve ikinci sınıf XMLElement denilen nesne baÄŸlantısı ve sonunda bir XML dosyası oluÅŸturmak için izin verir. Ben de buraya üye ve statik deÄŸiÅŸkenlere ihtiyacımız var.
  • Nihayet, neredeyse tüm XMLElement bazıları Tagged geniÅŸletmek gereken çok bu veri sınıfları var.

Tamam, bu sadece bir sınıf uzatmak olduğu için işe yaramaz. Java ile her şeyin yolunda olduğuna çok sık okudum ve birden çok devralma olması için gerek yok. Ama bir arabirim miras değiştirmeniz gerekir nasıl görmüyorum inanıyorum.

  1. Hiçbir anlamı aynı olduğundan, tüm veriler sınıflarda gerçek uygulama her zaman olur ama bu arayüzleri (sanırım) gerekli olurdu.
  2. Bir arayüz miras derslerimden biri değiştirebilirim nasıl görmüyorum. Burada değişkenler var ve tam olarak ne var.

Gerçekten biri bu konuyu bana açıklayabilir lütfen almıyorsun?

CEVAP
15 ŞUBAT 2011, Salı


Muhtemelen miras üzerinden kompozisyon (heyet) iyilik gerekir :

public interface TaggedInterface {
    void foo();
}

public interface XMLElementInterface {
    void bar();
}

public class Tagged implements TaggedInterface {
    // ...
}

public class XMLElement implements XMLElementInterface {
    // ...
}

public class TaggedXmlElement implements TaggedInterface, XMLElementInterface {
    private TaggedInterface tagged;
    private XMLElementInterface xmlElement;

    public TaggedXmlElement(TaggedInterface tagged, XMLElementInterface xmlElement) {
        this.tagged = tagged;
        this.xmlElement = xmlElement;
    }

    public void foo() {
        this.tagged.foo();
    }

    public void bar() {
        this.xmlElement.bar();
    }

    public static void main(String[] args) {
        TaggedXmlElement t = new TaggedXmlElement(new Tagged(), new XMLElement());
        t.foo();
        t.bar();
    }
}

Bunu PaylaÅŸ:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Awesome Toys TV

    Awesome Toys

    18 HAZİRAN 2014
  • Rozetked | Обзоры

    Rozetked | Ð

    5 AÄžUSTOS 2011
  • bored before i even began

    bored before

    30 Mart 2009