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 Pattern – Factory Pattern Nedir?

Paylaş

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

Oluşturduğumuz bir interface ya da abstract sınıftan türeterek başka bir sınıf oluşturma işlemine verilen addır Factory Pattern. Oldukça sık kullanılan bu pattern aynı özelliği kullanmak isteyen sınıflar tarafından kullanılır.

Daha somut bir örnek ile açıklayalım.

Yapacağımız örnekte bir Araba’nın özelliklerini bildirecek bir yazılım yapacağız. Kullanıcı araba seçecek ancak seçilen arabanın hatchback mi yoksa sedan özellikli olacağını bilmiyoruz ve bu değişkenlik gösterebilir. Kullanıcının seçimine bırakılan bu işlemde kullanıcının her seçiminde kod değişikliği yapmamak için Factory Pattern’e uygun bu örneği yazacağız.

Örneğimizin diagramını bir bakalım.

Şimdi Araba interfacemizi oluşturalım.

public interface  Araba {
    public abstract String getTip();
}

Arabamızın bir tipi olucak Hatchback ya da sedan.

Şimdi Hatchback ya da Sedan tiplerini oluşturacak Modellerimizi oluşturalım. Bu  modeller arabaya bağlı olacağı için Araba interfacemizi implement edeceğiz.

public class Hatchback implements Araba{

    public String getTip() {
        return "Hatchback Tipinde Araba Seçildi.";
    }
}
public class Sedan implements Araba {

    public String getTip() {
        return "Sedan Tipinde Araba Seçildi.";
    }
}

Modellerimizi oluşturduk. Şimdi sıra geldi en önemli yere. Yapmak istediğimiz şey. Kullanıcı ne zaman araç tipi seçerse o araç tipi nesnesi oluşturulmalı ve ardından işleme devam etmeli. Bunun için bir “Factory” oluşturacağız.

public class ArabaFactory {

    public static Araba getAraba(String tip){

        if("Sedan".equalsIgnoreCase(tip)) return new Sedan();
        else if("Hatchback".equalsIgnoreCase(tip)) return new Hatchback();

        return null;
    }
}

Kullanıcı araba istiyor ve tipini seçecek. Tip seçildiği anda ilgili nesne oluşturulacak. Yukarıda yaptığımız işlem bu. Şimdi sıra geldi programımızı çalıştırmaya. Main classımızı oluşturalım.

public class MainFactory {

    public static void main(String[] args) {
        Araba hatchbackAraba=ArabaFactory.getAraba("Hatchback");
        Araba sedanAraba=ArabaFactory.getAraba("Sedan");


        System.out.println(hatchbackAraba.getTip());
        System.out.println(sedanAraba.getTip());
    }
}

Programımızdan iki adet araba istedik ve bu arabalar Araba nesnesinden üretilerek ArabaFactory’e göndererek ilgili nesnemizin oluşturulmasını sağladık.

Sonuç olarak ekranda şöyle bir görüntü olmalı.

Hatchback Tipinde Araba Seçildi.
Sedan Tipinde Araba Seçildi.

Process finished with exit code 0


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

Tags:

design patternFactory Patterntasarım kalıpları

Paylaş

Diğer Yazılar

Spring Dersleri
Previous

Spring MVC Form İşlemleri Form Validation @InitBinder Kullanımı

blank
Next

Design Patterns – Singleton Pattern Nedir?

Next
blank
15 Şubat 2018

Design Patterns – Singleton Pattern Nedir?

Previews
06 Şubat 2018

Spring MVC Form İşlemleri Form Validation @InitBinder Kullanımı

Spring Dersleri

5 Comments

  1. ibrahim dedi ki:
    09 Eylül 2018, 22:13

    Baslik “Factory Method Pattern” olursa daha dogru olur. GOF’a gore Factory pattern : creates objects without exposing the instantiation logic to the client.
    Factory Method Pattern: Defines an interface for creating objects, but let subclasses to decide which class to instantiate
    Ornekte de anlasilacagi uzere baslik Factory Method Pattern olmali. Buna benzer bir kac tane daha Turkce yazi okudum malesef digerlerinde de benzer sekilde. Onlara da benzer oneride bulundum

    Cevapla
  2. Ünal dedi ki:
    04 Nisan 2019, 22:35

    Super örnək oldu. Təşəkkürlər

    Cevapla
  3. Batın dedi ki:
    18 Kasım 2020, 12:46

    Hangi amaç ile kullanılır? Ne gibi durumlarda kullanmamız gerekir? Konularından bahseceğim. ( BAHSETMEDI )

    Cevapla
    1. Burak dedi ki:
      18 Kasım 2020, 16:37

      Emin misin?

      ”
      Yapacağımız örnekte bir Araba’nın özelliklerini bildirecek bir yazılım yapacağız. Kullanıcı araba seçecek ancak seçilen arabanın hatchback mi yoksa sedan özellikli olacağını bilmiyoruz ve bu değişkenlik gösterebilir. Kullanıcının seçimine bırakılan bu işlemde kullanıcının her seçiminde kod değişikliği yapmamak için Factory Pattern’e uygun bu örneği yazacağız.

      “

      Cevapla
  4. Ibrahim dedi ki:
    27 Mart 2021, 18:17

    Çok iyi örnekti, ellerinize sağlık. Buna ait abstract class-la olan bir örnek de vere bilirmisiniz rica etsem?

    Cevapla

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 – Prototype Pattern Nedir?

blank

Design Patterns – Singleton 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
Tanıyalım
Veritabanı
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