Factory Design Pattern

Factory Design Pattern

1023 Görüntülenme
0
0

Bu yazıdan itibaren bazı tasarım kalıplarını anlatmaya çalışacağım. İlk yazım Factory tasarım kalıbı üzerine. İsterseniz önce bir örnek koda bakalım.

package com.farukbozan.patterns.factory;public abstract class Car {protected int motorCapacity;protected Car(int length)
{
this.motorCapacity = length;
}
public abstract void showInfo();
}

Şimdi de bu sınıftan türeyen diğer üç sınıfa bakalım.

package com.farukbozan.patterns.factory;public class CarA extends Car {public CarA(int motorCapacity)
{
super(motorCapacity);
}@Override
public void showInfo()
{
System.out.println(“Low motor capacity… ” + motorCapacity);
}
}
package com.farukbozan.patterns.factory;
public class CarB extends Car {public CarB(int motorCapacity)
{
super(motorCapacity);
}@Override
public void showInfo()
{
System.out.println(“Good motor capacity… ” + motorCapacity);
}
}
package com.farukbozan.patterns.factory;
public class CarC extends Car {public CarC(int motorCapacity)
{
super(motorCapacity);
}@Override
public void showInfo()
{
System.out.println(“High motor capacity… ” + motorCapacity);
}
}

Şimdiye kadar yapmaya çalıştığımız var olan bir abstract sınıftan üç tane yeni sınıf türetip bunların ortak bir metot kullanmalarını sağlamak. Şimdi de factory tasarım kalıbının temel noktası olan sınıfımıza bakalım.

package com.farukbozan.patterns.factory;public class CarFactory {public Car getCar(int motorCapacity)
{
if(motorCapacity < 1600)
{
return new CarA(motorCapacity);
}
else
{
if(motorCapacity < 2000)
{
return new CarB(motorCapacity);
}
else
{
return new CarC(motorCapacity);
}
}
}}

CarFactory sınıfımız dışarıdan girilen parametre değerine göre var olan üç sınıftan birisinin örneğini döndürüyor. Sıra geldi main sınıfına.

package com.farukbozan.patterns.factory;public class FacrotyMain {public static void main(String[] args) {CarFactory factory = new CarFactory();
factory.getCar(1200).showInfo();
factory.getCar(3000).showInfo();
factory.getCar(1700).showInfo();
}
}

Dikkat edersek abstract sınıf üzerinden oluşturduğumuz üç sınıf da ortak bir amaç için oluşturulmuşlardır. Ayrıca kullanıcı hangi parametre değeri ile hangi sınıftan örnek oluşturulduğunu bilmek zorunda değildir. Tıpkı bu örnekte olduğu gibi. Kullanıcı arka plandaki oluşumlardan soyutlanır ve sadece parametreyi girmek zorundadır. Parametre değerine göre hangi sınıftan örnek oluşturulacağına factory sınıfı karar vermektedir. Umarım bu basit örnek faydalı olmuştur.

Bol Java’ lı günler dileğiyle…

Yazan: Faruk BOZAN

Yorum Yap

Kategoriler