Factory Paterni

@ 01 Ağustos 2007 tarihinde yazdı. Yazıya yorum yazın.

Patern Kavramı

Patern kavramı; “klişeleşmiş durumlar için geliştirilen ve dokümante edilen tasarım çözümleri” biçiminde tanımlanabilir. Birinci bölümün bundan sonraki kısmında her nesne yönelimli programlama yapan kişinin bilmesi gereken belli başlı patern’ler ele alınmıştır.

Factory Paterni

Günlük hayatımızda kullandığımız televizyon alıcısı gibi pek çok sofistike nesneyi, bizzat kendimiz üretmek yerine, görevi bu tür nesneleri üretmek olan fabrikalardan alarak kullanırız. Çoğu zaman bu davranışımızın nedeni; söz konusu nesnenin üretilmesi noktasında kullanılan karmaşık tekniklerdir. Üstelik bazı nesnelerin üretimi legal de olmayabilir. Sözgelimi para basmak sadece darphaneler tarafından yapılabilen bir işlemdir.

Nesne yönelimli programlamada da gerek yapısı gerekse de üretiliş biçimi açısından oldukça komplike nesnelerle karşılaşılmaktadır. Sözgelimi DataRow sınıfı türünde bir nesnenin yaratılması için, tablonun şema yapısının kesin olarak bilinmesi gerekir. Aksi takdirde söz konusu tablo üzerindeki herhangi bir kaydı temsil edecek, bir DataRow nesnesi tablonun şema yapısından haberdar olamayacaktır. Bir başka deyişle DataRow nesnesinin yaratılışı (yapılandırılışı); veri tabanı programcısına bırakılamayacak derecede karmaşık bir işlemdir. Ayrıca mantık gereği tablodaki herhangi bir kaydı temsil edecek bir nesnenin yaratılması, bu işlemin tablo üzerinden başlatılmasını gerektirir. Bu nedenle DataRow sınıfına programcının erişebileceği bir başlangıç fonksiyonu (constructor) eklenmemiştir. DataRow sınıfı türünde nesne örneği yaratmak isteyen bir programcı, DataTable sınıfının NewRow() fonksiyonundan elde edeceği DataRow sınıfı türündeki nesne referansını kullanmak sureti ile amacına ulaşabilir.

DataRow benzeri nesneler için sınıf tasarımı yapan programcılar, söz konusu nesneye ait başlangıç fonksiyonunu bilinçli olarak sınıfı kullanacak kişilerin algısından gizlerler. Bu noktada kullanılan teknik; çoğu zaman başlangıç fonksiyonunu private gibi bir erişim belirteci ile tanımlamaktır.

Terminolojide bu tür nesneler ürün nesne olarak anılır. Ürün nesnelerin yaratılması noktasında ise factory sınıf ismi verilen bir sınıfa ait ve terminolojide factory metot olarak bilinen, ürün sınıf türünde referans döndürmekle görevli fonksiyonlar kullanılır. Kullanılan bu tekniğin ismi ise; factory paternidir. Böylece ürün nesnelerin yaratılması ve/veya yok edilmesi ile ilgili detaylı işlemler factory paterni kullanılarak, soyutlanabilir.


Public Class Product
Friend Sub New()
Console.WriteLine("Ürün yaratıldı")
End Sub
End Class

Public Class Factory
Public Function CreateProduct() As Product
‘Factory metot
Return (New Product)
End Function
End Class

Imports FactoryLib
Module Module1
Sub Main()
Dim oFactory As New Factory
Dim prd As Product
prd = oFactory.CreateProduct()
End Sub
End Module

Aykut Taşdelen