SORU
8 NİSAN 2010, PERŞEMBE


Basit bir dille biri bana ziyaretçi desen'mümkünse örneklerle amaç s açıklayabilir

Gerçekten ziyaretçi desen ve kullanımları hakkında kafam karıştı. Gerçekten bu desen ya da amacı kullanmanın yararları görselleştirmek için görünmüyor olabilir. Eğer birisi mümkünse örnekle açıklayabilir olursa çok iyi olur. =)

Şimdiden teşekkürler

CEVAP
9 NİSAN 2010, Cuma


Bir zamanlar...

class MusicLibrary {
    private Set<Music> collection ...
    public Set<Music> getPopMusic() { ... }
    public Set<Music> getRockMusic() { ... }
    public Set<Music> getElectronicaMusic() { ... }
}

Sonra diğer türler tarafından kütüphane koleksiyonu filtre edebilmek gibi olacağını fark edersiniz. Yeni alıcı yöntemler eklemeye devam edersiniz. Ya da Ziyaretçiler kullanabilirsiniz.

interface Visitor<T> {
    visit(Set<T> items);
}

interface MusicVisitor extends Visitor<Music>;

class MusicLibrary {
    private Set<Music> collection ...
    public void accept(MusicVisitor visitor) {
       visitor.visit( this.collection );
    }
}

class RockMusicVisitor implements MusicVisitor {
    private final Set<Music> picks = ...
    public visit(Set<Music> items) { ... }
    public Set<Music> getRockMusic() { return this.picks; }
}
class AmbientMusicVisitor implements MusicVisitor {
    private final Set<Music> picks = ...
    public visit(Set<Music> items) { ... }
    public Set<Music> getAmbientMusic() { return this.picks; }
}

Algoritma veri ayrı. Ziyaretçi uygulamaları için algoritma boşaltma. Oluşturarak işlevselliği ekleyindaha fazlaziyaretçiler, yerine sürekli değiştirerek (ve) şişkinlik verileri tutan bir sınıf.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • bmarian22

    bmarian22

    22 Aralık 2007
  • InfoPuppet

    InfoPuppet

    15 Kasım 2011
  • TheDroidDemos

    TheDroidDemo

    15 ŞUBAT 2011