() kopya vs fabrika yöntemi yapıcı vs?
Klon uygulama konusunda hızlı bir google yaptım ve buldum Java: http://www.javapractices.com/topic/TopicAction.do?Id=71
Aşağıdaki açıklama vardır:
kopya yapıcılar ve statik fabrika metotları klonlamak için bir alternatif sağlar, ve çok daha kolay uygulamak için.
Tek istediğim derin bir kopyasını yapmak. Clone() uygulama mantıklı, ama son derece google, bu sırada madde bir sürü yapmak gibi görünüyor beni biraz korkutuyor.
Burada fark ettim bu konuyu
Kopya kurucular Jenerik çalışmazlar.
İşte derlemek olmaz pseudo-code.
public class MyClass<T>{
..
public void copyData(T data){
T copy=new T(data);//This isn't going to work.
}
..
}
Örnek 1: bir kopyasını genel bir sınıf. kurucu Kullanarak
Fabrika yöntemleri standart isimler yok.
Oldukça güzel yeniden kullanılabilir kod için bir arayüzü var.
public class MyClass<T>{
..
public void copyData(T data){
T copy=data.clone();//Throws an exception if the input was not cloneable
}
..
}
Örnek 2: clone() Kullanarak genel bir sınıf.
O klon statik bir yöntem olmadığını fark ettim, ama yine de tüm korunan alanların derin kopyalarını yapmak için gerekli olmaz mı? Klon uygularken(), sigara içilmez cloneable alt sınıflar bana önemsiz görünüyor. istisnalar atmak için ekstra çaba
Bir şey mi kaçırdım? Herhangi bir anlayış mutluluk duyacağız.
CEVAP
Temelde, clone is broken. Hiçbir şey jenerik ile kolayca çalışır. Böyle bir şey (nokta geçmek için kısaltılmış) varsa:
public class SomeClass<T extends Copyable> {
public T copy(T object) {
return (T) object.copy();
}
}
interface Copyable {
Copyable copy();
}
Derleyici bir uyarı ile bu işi yapabilirsiniz. Jenerik zamanında silinir çünkü, bir kopyasını yapan bir derleyici uyarı üreten bir döküm var.

Bir Kurucu kullanmak için zaman ve get...
Soyut Fabrika Deseni ve Fabrika Yöntem...
Bu Fabrika Yöntemi yaratma kapasitesid...
Tasarım Desenleri: Fabrika Fabrika yön...
Yapıcı işlevi, vs Fabrika fonksiyonlar...