"sabit nesneler" örneklerinin devlet değiştirilemez o değişmez anlam sınıflar oluşturma ile kullanılan fabrika benzeri (java) yöntemleri çağırmak için ne; Java'da (ve benzer dillerdeki), kurucuda atanan tüm alanlar), bazen değiştirilmiş örneklerin oluşturulmasına izin vermek bazen yararlıdır. Yani, bir örneği taban olarak kullanmak ve yalnızca bir özellik değerine göre farklılık gösteren yeni bir örnek oluşturmak; baz örneğinden gelen diğer değerler. Yanisabit nesneler
public class Circle {
final double x, y; // location
final double radius;
public Circle(double x, double y, double r) {
this.x = x;
this.y = y;
this.r = r;
}
// method for creating a new instance, moved in x-axis by specified amount
public Circle withOffset(double deltaX) {
return new Circle(x+deltaX, y, radius);
}
}
: Basit bir örnek vermek gerekirse, bir benzeri sınıfı olabilir "withOffset" yöntemi ne denir edilmelidir? (not: isminin ne olması gerektiği DEĞİL - ama bu yöntemlerin adı ne denir?). Teknik olarak, bu bir tür fabrika yöntemidir, ancak bir şekilde bana pek de doğru görünmüyor, zira fabrikalar genellikle basit özellikler (ve ya statik yöntemler, ya da sonuç türünün üyeleri değil, fabrika tipi) olarak veriliyor. Bu yüzden orada tahmin ediyorum
tür yöntemler için daha iyi bir terim olmalıdır. Bu yöntemler " fluent interface" uygulamak için kullanılabilir, belki "akıcı fabrika yöntemleri" olabilir? Daha iyi öneri?DÜZENLEME: Yanıtlardan biri tarafından önerilen şekilde, java.math.BigDecimal
, 'add', 'subtract' (etc) yöntemleri ile iyi bir örnektir.
Ayrıca: Ben
EDIT (o yöntemi için ilgili özel isim sorar rağmen) bir çeşit ilgili olduğunu (az Jon Skeet tarafından) this question var olduğunu fark MAYIS-2014: Benim şu anki favori mutant factory
FWIW olduğunu .
Kötü adlandırılmış bir yöntem olarak adlandırıyorum. – Falmarri
"move" ve "delta", varolan bir örneğin özelliklerinin mutabilitesine işaret eder ... – BoltClock
Lütfen asıl soruları okuyun - Yöntemleri nasıl adlandıracağımı sormadım, fakat yöntemlerin nasıl çağrılacağını sormadım. Ama sadece başkalarının kenarda durmasını önlemek için kodu biraz değiştireceğim. – StaxMan