Prototip şablonu, Oluşturucu (Creational) tasarım desenlerinden biridir ve bu nedenle nesne oluşturma pratiği sağlar.
Bazı durumlarda nesne oluşturma pahalıya mal olabilir, çok fazla zaman ve kaynak gerektirebilir veya aynı özelliklerde nesne üretilmesi gereken durumlar olabilir. Böyle nesnelerin üretim maliyetini azaltmak için var olan nesnenin kopyasının üretilmesi yoluna gidilebilinir.
Dolayısıyla, orijinal nesneyi yeni bir nesneye kopyalamak ve daha sonra ihtiyaçlarımıza göre oluşan kopyayı değiştirmek için bir yöntem sağlar. Bu desen, nesneyi kopyalamak için java klonlama kullanır.
Diyelim ki bir robot tasarladık. Bu robottan yüzlerce daha yaratıp fakat farklı farklı özellikler vermek istiyoruz. İşte ilk ortak örneğimizi yapıyoruz akabinde kopyalarını oluşturup onların üzerinden değişiklik yapıyoruz.
Bu şablonu, bir kod örneğiyle anlamak daha kolay olur. Uygulama ayağa kalktıktan sonra veritabanından tüm kullanıcıları çektiğimizi ve sonra bu kullanıcı listesini Users sınıfına geçtiğimizi düşünelim. Şimdi, bu kullanıcı listesine manipülasyonlar yapmak istiyoruz ; kullanıcı eklemek , çıkarmak, sıralamak … Bu nedenle veritabanından tekrar tekrar kullanıcı listesine çekmek veya sürekli yeni bir collection oluşturmak iyi bir fikir değildir. Bundan dolayı daha iyi bir yaklaşım olan Prototip şablonu ile var olan nesneyi yeni bir nesneye kopyalamak ve daha sonra veri işleme yapmaktır.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
public class Users implements Cloneable{ private List userList; public Users(List userList){ this.userList = userList; } public List getUserList() { return userList; } @Override public Object clone() throws CloneNotSupportedException{ List tempUserList = new ArrayList(); for(String s : this.getUserList()){ tempUserList.add(s); } return new Users(tempUserList); } } |