Twitter Youtube Github
Burak Kutbay'ın Kişisel Blog'u |

Type and hit Enter to search

  • Eğitim
  • Quarkus
  • Spring Cloud
  • Spring Boot
  • Spring JDBC Template
  • Spring MVC
  • Spring Core
  • Spring Örnekleri
  • Hibernate
  • Java Server Pages
  • Java Server Faces
  • PrimeFaces
  • Servlet
  • JDBC
  • JSTL
  • Java 8
  • / Diğer
    • Ünlü Bilişimciler
    • C Sharp
    • Kütüphane
    • Makale
Design Patterns

Design Patterns – Prototype Pattern Nedir?

Paylaş

Bu yazıda Prototype Pattern nedir? Hangi amaç ile kullanılır? Ne gibi durumlarda kullanmamız gerekir? Konularından bahsedeceğim.

Yaptığımız projemizde nesnemizi birden fazla oluşturmamız gerektiğinde normalde “new” olarak oluşturmak yerine bir tane oluşturduğumuz nesnemizin klonunu oluşturmamızı sağlayan bir design patterndir.

Prototype Pattern kullanılmasının amacı üretilen nesnenin çok kaynak tüketmesi durumunun engellenmesini sağlamaktır.

Prototype Pattern’i anlamak için örneğimizi yapalım. Uye classımız olucak ve üyeler oluşturacağız.

public class Uye implements Cloneable {

    private List<String> uyeListesi;

    public Uye() {
        uyeListesi = new ArrayList<String>();
    }

    public Uye(List<String> liste) {
        this.uyeListesi = liste;
    }

    public void uyeEkle() {

        uyeListesi.add("Burak");
        uyeListesi.add("Ahmet");
        uyeListesi.add("Mehmet");
    }

    public List<String> getUyeListesi() {
        return uyeListesi;
    }

    @Override
    public Object clone() throws CloneNotSupportedException {
        List<String> uyeListesi = new ArrayList<String>();
        for (String s : this.getUyeListesi()) {
            uyeListesi.add(s);
        }
        return new Uye(uyeListesi);
    }
}

Uye classımızın klonlar oluşturularak çalışacağını Cloneable implementi yaparak belirtiyoruz.  Objelerimizi klonlamak için clone metodunu override ederek. Aynısından türetmeyi sağlamaktayız. Her yeni nesne oluşturulduğunda üye listemizin içerisinde 3 eleman bulanacak. Yeni nesne oluşturumunda bu 3 eleman ile kullanılmak üzere geri döndürmekteyiz.

Programımızı çalıştıralım ve aynı nesne üzerinden klonlar yaparak yeni listeler türetelim.

public class App {

    public static void main(String[] args) throws CloneNotSupportedException {

        Uye uyeler = new Uye();
        uyeler.uyeEkle();

        Uye yeniUye = (Uye) uyeler.clone();
        Uye yeniUye2 = (Uye) uyeler.clone();

        List<String> list = yeniUye.getUyeListesi();
        list.add("Ayşe");

        List<String> list1 = yeniUye2.getUyeListesi();
        list1.remove("Ahmet");

        System.out.println("uyeler List: " + uyeler.getUyeListesi());
        System.out.println("yeniUye List: " + list);
        System.out.println("yeniUye2 List: " + list1);

    }
}

Uye nesneleri türeterek üye listesini yeni nesnemize aktarıyoruz ve bir klonlama işlemi yaparak yeni nesne üzerine ekleme, çıkarma ya da silme işlemlerini sorunsuz olarak az kaynak tüketerek yapabildik.

Çıktımız ise şöyle.

uyeler List: [Burak, Ahmet, Mehmet]
yeniUye List: [Burak, Ahmet, Mehmet, Ayşe]
yeniUye2 List: [Burak, Mehmet]  


Projenin Kaynak Kodlarını Github Üzerinden Görünlüte / İndir 

Tags:

design patternPrototype Patterntasarım kalıpları

Paylaş

Diğer Yazılar

Previous

Design Patterns – Singleton Pattern Nedir?

blank
Next

Design Patterns – Builder Pattern Nedir?

Next
blank
31 Mart 2018

Design Patterns – Builder Pattern Nedir?

Previews
15 Şubat 2018

Design Patterns – Singleton Pattern Nedir?

blank

No Comment! Be the first one.

Bir cevap yazın Cevabı iptal et

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

İlgini Çekebilir

blank

Design Patterns – Template Metot Pattern Nedir?

blank

Design Patterns – Builder Pattern Nedir?

blank

Design Patterns – Singleton Pattern Nedir?

blank

Design Pattern – Factory Pattern Nedir?

Burak Kutbay'ın Kişisel Blog'u |

© 2008 - ∞, Her hakkı saklıdır.

Link

  • Hakkımda
  • İletişim
  • Arşiv

Kategori

Cloud
Amazon Web Services
Vue.js
Gradle
Node.js
Android
Struts
Redis
Röportaj
Spring Data
Spring Cloud Stream
XCode
Debezium
Mikroservis Mimarisi
Video
Spring Native
iPhone Uygulama Geliştirme
Objective C
JPA
Spring Security
PostgreSQL
Apache Kafka
Git
Servlet
Yaptığım Projeler
Maven
Design Patterns
DevOps
Linux
RabbitMQ
PrimeFaces
JDBC
Spring Jdbc Template
Spring
Spring MVC
Manset
Google
Spring Cloud
OCA Java SE 8
Spring Core
Quarkus
Microsoft
Veritabanı
Tanıyalım
Java SE
Hibernate
Teknoloji
Okuduğum Kitaplar
Java Server Faces
Yazılım Mühendisliği
C Sharp
Spring Boot
Java
Günlüğüm
Java Server Page
Makale

Takip Et

Twitter Youtube Github
  • Eğitim
  • Quarkus
  • Spring Cloud
  • Spring Boot
  • Spring JDBC Template
  • Spring MVC
  • Spring Core
  • Spring Örnekleri
  • Hibernate
  • Java Server Pages
  • Java Server Faces
  • PrimeFaces
  • Servlet
  • JDBC
  • JSTL
  • Java 8
  • / Diğer
    • Ünlü Bilişimciler
    • C Sharp
    • Kütüphane
    • Makale