Factory Design Pattern

Manager Class : Merhaba, ben bir A nesnesi yaratmak istiyorum.

Geliştirici : O zaman Factory nesnesine başvurman gerek.

Factory design pattern’ı yukarıdaki kısa konuşma özetliyor aslında. Nesne yaratmak için Factory nesneleri oluştururuz ve nesne yaratmak istediğimizde, Factory nesnelerine başvururuz. Gelin Unity’de basit bir örneği gerçekleyelim.

Uygulayacağımız Örneğin Senaryosu

Bir shape renderer’ımız olacak. Bu renderer içinde bir shape listesi bulunduracak. Bu örneğe özel olarak, renderer, ShapeFactory nesnemize başvurarak render etmek istediği nesneleri alacak. Ve render edecek.

Adım 1

Bu adımda ana sınıfımızı, yani Shape sınıfını yazacağız.

Shape sınıfımız, bütün diğer Shape’lerde olacak olan, _center Vector3’ünü taşıyor. Ve gene diğer tüm Shape nesnelerinde olması gereken Draw() metodunu bünyesinde barındırıyor.

Adım 2 

Bu adımda Cube ve Sphere nesnelerimizi oluşturalım ve onları Shape nesnesinden türetelim.

Cube Nesnesi

Cube nesnesi, türetildiği Shape nesnesine ek olarak, bir de _size değişkeni barındırıyor. _size(yükseklik, genişlik, derinlik) olarak anlaşılmalıdır.

Sphere Nesnesi

Sphere nesnesi türetildiği Shape nesnesinin değişkenlerine ek olarak bir de radious değişkeni tutuyor. _radious değişkeni, çizeceğimiz Sphere’in yarı çapıdır.

Cube ve Sphere nesnelerinin Constructor’larında, nesnelere center ve ilgili değişkeni atanmakta, nesneler oluşturulmaktadır. Ayrıca bu nesneler Draw metodunu override ederek, bu metodu kendilerine göre özelleştirmektedirler.

Adım 3 

Bu adımda ShapeFactory nesnemizi oluşturacağız. Ve bir de Shape tiplerimizi tanımlayacağız.

Cube ve Sphere olmak üzere iki adet shape tipi tanımladık.

Artık nesne yaratılmak istendiğinde başvuracağımız bir Factory nesnemiz var.

Adım 4

Shape Renderer nesnesi,  Start() metodu çağrıldığında Draw() metodunu çağıracağı nesneleri, ShapeFactory’den alır ve OnDrawGizmos() metodu içinde bu nesnelerin Draw() metodlarını çağırarır.

Sonuç olarak, Scene ekranında kırmızı bir cube ve siyah bir sphere nesnesi görürürüz. Sadece Scene ekranında görmemizin sebebi, Gizmos.DrawSphere ve Gizmos.DrawCube metodlarının Scene sahnesinde görülebilecek test çizimleri yapmasıdır. Bu eğitim yazısının asıl amacı Factory design pattern’ı anlatmak olduğu için, Draw.Gizmos metodları kullanılmıştır.

Sorularınız ve önerileriniz için lütfen yorum yapmaktan çekinmeyin. Bana, cosgun.halil@gmail.com adresinden ulaşabilirsiniz.

Saygılar.