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

  • foreignimage

    foreignimage

    13 HAZİRAN 2006
  • POGProductionz

    POGProductio

    27 NİSAN 2012
  • WePlayWeWatch

    WePlayWeWatc

    3 Temmuz 2013