Fabrika Yordamı
Bu desen nesne yaratan bir yordamdan ibarettir. Yordama nesne ile ilgili bir değiştirge verdiğinizde, bu değiştirgeye bağlı olarak size belli bir nesneyi yaratıp döndürür. Yaratılan nesne belirli bir üst sınıftan türeyen bir sınıf tipindedir.
Bu desenle nesne yaratma sorumluluğunu, bir yordama vererek sistemden soyutlamış olursunuz. Sistem belli hiyerarşideki nesnelerden hangisinin ve nasıl yaratıldığı ile ilgilenmemiş olur. Uygulamada belirli tipteki nesnelerin yaratılma işini ve bu işin detaylarını ayırmak istiyorsanız, bu deseni kullanabilirsiniz.
Örnek :
Bir kırtasiye sisteminde öğrenciler dolma kalem ve kurşun kalem olmak üzere iki ayrı tipteki kalemlerle çizim yapmaktadırlar. Fakat bu kırtasiye sistemindeki öğrenci yalnızca çizim yapmak istemekte ve kalem seçme ve yaratma sorumluluğunu bir başka sınıfa bırakmak istemektedir. Böyle bir durumda fabrika yordamı tasarım desenini kullanabiliriz. Sistemde her şeyden önce
Kalem nesnesini ve bundan türemiş
DolmaKalem ve
KurşunKalem nesnelerini kurmak durumundayız. Buradaki
Kalem nesnesi bir arayüz sınıfı veya soyut sınıf olabilir. Bunların ortak yordamı olan çizim yapma ile ilgili bir başka yordama da ihtiyaç duyarız. Örnek de bunun ismine
çizimYap ismini verdik. Bir kalem nesnesi yaratıp da döndüren bir tane de fabrika sınıfına ihtiyaç duyarız. Bu örnek de bunun için
KalemFabrikası isimli sınıfı kullandık. Bu sınıf desene ismini veren fabrika yordamını bulundurmaktadır. Sistemi kullanan ana sınıf da
Öğrenci sınıfıdır. Her ne kadar örnek de öyle kullandıysak da fabrika yordamı için ayrıca bir sınıf kurmak zorunda değiliz. Bu yordamı
Öğrenci sınıfının içine de koyabilirdik.
Örnek Sınıf Çizelgesi :
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir. Kalem.java : PHP Kod: Kodu kopyalamak için üzerine çift tıklayın!
public interface Kalem {
void çizimYap();
}
DolmaKalem.java : PHP Kod: Kodu kopyalamak için üzerine çift tıklayın!
public class DolmaKalem implements Kalem {
@Override
public void çizimYap() {
// Dolma kalem çizim işlemi.
System.out.println( "Dolma kalem çizimi." );
}
}
KurşunKalem.java : PHP Kod: Kodu kopyalamak için üzerine çift tıklayın!
public class KurşunKalem implements Kalem {
@Override
public void çizimYap() {
// Kurşun kalem çizim işlemi.
System.out.println( "Kurşun kalem çizimi." );
}
}
KalemFabrikası.java : PHP Kod: Kodu kopyalamak için üzerine çift tıklayın!
public class KalemFabrikası {
public Kalem kalemYarat( String tip ) {
if ( tip.equals( "kuşun" ) ) {
return new KurşunKalem();
} else if ( tip.equals( "dolma" ) ) {
return new DolmaKalem();
}
// Varsayılan kalem tipi.
return new KurşunKalem();
}
}
Öğrenci.java : PHP Kod: Kodu kopyalamak için üzerine çift tıklayın!
public class Öğrenci {
public static void main(String[] args) {
Kalem kalem = new KalemFabrikası().kalemYarat( "dolma" );
kalem.çizimYap();
}
}
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]