SORU
28 AĞUSTOS 2009, Cuma


Kötü uygulama ayarlayıcı bir dönüş yapmak için&; quot" mi?

İyi ya da kötü bir fikir java belirleyiciler dönüş yapmak için "bu"?

public Employee setName(String name){
   this.name = name;
   return this;
}

Bu desen sonra böyle belirleyiciler zinciri istemiyorsanız yararlı olabilir:

list.add(new Employee().setName("Jack Sparrow").setId(1).setFoo("bacon!"));

bunun yerine:

Employee e = new Employee();
e.setName("Jack Sparrow");
...and so on...
list.add(e);

...ama sanki standart sözleşmeye aykırı. Bu kanepe başka bir şey yararlı yaptırabilir sırf faydalı olabilir sanırım. Bu model bazı yerlerde kullanıldığını gördüm (örneğin JMock, JPA), ama nadir ve genellikle sadece bu desen her yerde kullanıldığı çok iyi tanımlanmış API için kullanılan gibi görünüyor.

Güncelleme:

Tarif ettiğim şey belli ki geçerlidir, ama gerçekten aradığım şeyi bu genellikle kabul edilebilir olup olmadığını, ve eğer tuzaklar veya ilgili herhangi bir en iyi uygulamalar varsa üzerine bazı düşünceler. Builder deseni biliyorum ama benim anlattığım ne - Josh Bloch bu nesne oluşturmak için ilişkili statik Oluşturucu bir durum var açıklar gibi biraz daha karmaşık.

CEVAP
28 AĞUSTOS 2009, Cuma


Kötü bir uygulama değil. Giderek daha yaygın bir uygulamadır. En çok dil "normal" ayarlayıcı kullanım sözdizimi ama sen belirleyiciler birlikte zinciri için izin verir. değiştirmiyor Yani eğer olsaydı zaten sana döndürülen nesne ile uğraşmak gerekmez

Bu yaygın oluşturucu bir desen veya fluent interface denir.

Java API aynı zamanda ortak:

String s = new StringBuilder().append("testing ").append(1)
  .append(" 2 ").append(3).toString();

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Jay Will

    Jay Will

    19 NİSAN 2006
  • Jon Reed

    Jon Reed

    14 AĞUSTOS 2006
  • Moto Journal

    Moto Journal

    28 Mayıs 2007