Merhaba arkadaşlar,

Bu dersimizde, yazdığımız kodların daha iyi olmasını sağlayacak bir tasarım desenini işleyeceğiz. Adı “Fabrika tasarım deseni”. Fabrika denmesinin sebebi, bir sınıfın, kendi içlerinde benzer kalıplarda olan java sınıflarından üretiyor olmasıdır.

Örneğin bir araba fabrikamız olsun fakat farklı modellerde araçları üretsin. Reno, Bmw ve Mercedes gibi. Bu araçların hepsinin bir “MARKASI” vardır, bir “FİYATI” vardır öyle değil mi? Bu iki temel özellikle, şablon haline getirilip, üretilen araçların kullanılmasını kolaylaştıracak bir desen oluşturacağız birlikte.

Önce araçların ortak kalıbı olan şablonu yani arayüzü oluşturalım. Adı “Araba” olacak, aşağıdaki gibi.

  1.  
  2. package com.umitsamimi.fabrikadeseni;
  3.  
  4. public interface Araba {
  5.  public String getMarka();
  6.  public String getFiyat();
  7. }

Arayüz sınıfımızda gördüğünüz gibi, iki method(yordam) bulunmakta. Bu iki yordam, kendisinden implemente edilen tüm sınıflarda olmak zorundadır ve o sınıfların, Araba arayüzüne göre şekillenmesini sağlayacaktır.

Şimdi Araba Arayüz’ünden implemente edilen sınıflara geçelim. İlk,

  1.  
  2. package com.umitsamimi.fabrikadeseni;
  3.  
  4. public class Renault implements Araba {
  5.  
  6.  @Override
  7.  public String getMarka() {
  8.   return "Bu aracin markasi Reno";
  9.  }
  10.  
  11.  @Override
  12.  public String getFiyat() {
  13.   return "X lira";
  14.  }
  15.  
  16. }

Gördüğünüz gibi Renault araci, bir markaya ve bir fiyata sahip. Bu sebeple Araba Arayüz’ünden implemente edildi. Aynı şekilde

  1.  
  2. package com.umitsamimi.fabrikadeseni;
  3.  
  4. public class Bmw implements Araba {
  5.  
  6.  @Override
  7.  public String getMarka() {
  8.   return "Bu aracin markasi BMW";
  9.  }
  10.  
  11.  @Override
  12.  public String getFiyat() {
  13.   return "Y lira";
  14.  }
  15.  
  16. }

Bmw aracı da Araba Arayüz’ünden implemente edildi. Son olarak,

  1.  
  2. package com.umitsamimi.fabrikadeseni;
  3.  
  4. public class Mercedes implements Araba {
  5.  
  6.  @Override
  7.  public String getMarka() {
  8.   return "Bu aracin markasi Mercedes";
  9.  }
  10.  
  11.  @Override
  12.  public String getFiyat() {
  13.   return "Z lira";
  14.  }
  15.  
  16. }

Tüm araçların tanıtımını yaptık, şimdi sırada bu araçların üretildiği fabrikayı oluşturmakta.

  1.  
  2. package com.umitsamimi.fabrikadeseni;
  3.  
  4. public class ArabaFabrikasi {
  5.  
  6.  public static Araba arabaGetir(String arabaMarkasi)
  7.  {
  8.   if("Renault".equals(arabaMarkasi))
  9.   {
  10.    return new Renault();
  11.   }
  12.   else if("Bmw".equals(arabaMarkasi))
  13.   {
  14.    return new Bmw();
  15.   }
  16.   else if("Mercedes".equals(arabaMarkasi))
  17.   {
  18.    return new Mercedes();
  19.   }
  20.   return null;
  21.  }
  22. }

Özellikle arabaGetir yordamını static tanımladık. Böylelikle, her defasında ArabaFabrikasi sınıfını oluşturmanıza gerek olmadan, direk yordam ile bir arac üretebileceksiniz. Bu yordam gördüğünüz gibi geriye “Araba” sınıfını dönüyor. Modelini vermeniz yeterli.

Şimdi de sırada ArabaFabrikasının çağrılıp, üretilen aracı kullanacağımız ana sınıfı tanımlayalım..

  1. package com.umitsamimi.fabrikadeseni;
  2.  
  3. public class Istemci {
  4.  
  5.  public static void main(String[] args) {
  6.   Araba reno = ArabaFabrikasi.arabaGetir("Renault");
  7.   System.out.println("Reno arac fiyati " + reno.getFiyat());
  8.  
  9.   Araba bmw = ArabaFabrikasi.arabaGetir("Bmw");
  10.   System.out.println("Bmw arac fiyati "+ bmw.getFiyat());
  11.  }
  12. }

Böylelikle dersimizi sonlandırmış olduk. Bol javalı vakitler 🙂



*** *** KANALIMIZA ABONE OLMAYI UNNUTMAYIN ** ***

*** *** KANALIMIZA ABONE OLMAYI UNNUTMAYIN *** ***