Bu yazımda size Abstract Factory adında nesneye dayalı yazılım şablonunu (Object-Oriented Design Pattern) anlatacağım. Abstract Factory şablonu genelde aynı sınıf üzerinde ileride kod değiştirmemek için yapılır. Çünkü bu tür yazılımlarda amaç diğer kodla tekrar uğraşmamaktır. Bunu şöyle açıklayayım. Mesela siz bir telefon üzerine yazılım yapıyorsunuz. Ama bu telefonun değişik bir versiyonu çıktı ve bunun işlevsel özellikleri de diğerinden farklı. Siz bu noktada bu iki telefonu da ela alan bir sınıf yazmış olmanız gerekli yada siz öyle yazarsınız ki bu yazılımı hemen sadece bu telefon için kullanacağınız ortak metotları olan bir sınıf yaratırsınız. Demek istediğim bu yeni telefonu yaratacak başka bir sınıf yazarsınız ve sisteme bu şekilde eklersiniz yeni gelen telefonu. Bu şekilde yeni telefonun işlevsel özelliklerini diğer sınıfa hiç dokunmadan hayata geçirmiş olursunuz. Bunu kullanan sınıflar da metotlar ortak olduğu için uyumluluk sorunu göstermez.
public abstract class ProductA{} public class ProductA1 extends ProductA{} public class ProductA2 extends ProductA{} public abstract class ProductB{} public class ProductB1 extends ProductB{} public class ProductB2 extends ProductB{} public abstract class AbstractFactory{ public ProductA getA(); public ProductB getB(); } public class Factory1{ public ProductA getA(){ return new ProductA1(); } public ProductB getB(){ return new ProductB1(); } } public class Factory2{ public ProductA getA(){ return new ProductA2(); } public ProductB getB(){ return new ProductB2(); } } public class User{ public static void main(String []args){ AbstractFactory factory = new Factory1(); factory.getA(); } }
Bu yazımda size Factory adında nesneye dayalı yazılım şablonunu (Object-Oriented Design Pattern) anlatacağım. Factory şablonunu şöyle anlatayım. Düşünün ki siz painte benzer bir program yazacaksınız ve bu programda siz sistemi kullanan bir kullanıcısınız ve siz çizmek istediğiniz objeyi söylüyorsunuz bizim factory adındaki sınıfımızda gidip bu objeyi sizin için yaratıyor. Daha programlama babında konuşacak olursak. Siz Shape adında genel bir interface yazıyosunuz. Bu interface side kullanan Rectangular, Circle vb objeler var. Siz de bu durumda Client sınız. Client yeni bir obje yaratılması için Factory adlı sınıfa bir parametreyle (bunun ne olacağını ve türünü siz seçebilirsiniz) emir veriyosunuz. Factory de bu parametreye göre size o objeden dönüyor.
public interface Shape{} public class Circle implements Shape{} public class Rectangular implements Shape{} public class Factory{ public Shape getShape(String shapeName){ if(shapeName.equals("circle")) return new Circle(); else if(shapeName.equals("rectangular")) return new Rectangular(); else return null; } }
Bu yazımda size Singleton adında nesneye dayalı yazılım şablonunu(Object-Oriented Design Pattern) anlatacağım. Singleton benim en çok kullandığım dizayn şablonlarından biri. Bu şablon genelde yaratmak istediğiniz objeden yalnız bir tane olmasını istediğiniz durumlarda kullanabileceğiniz bir şablon. Örnek verecek olursak, bir oyun yazıyosunuz ve bu oyununun Game adında oyunu çekip çeviren bir objesi var ve her yerden çağırabilinsin istiyorsunuz. Bu durumda singleton kullanmak şart olur :d.
public class Singleton{ private static Singleton singleton; private Singleton(){} public Singleton getInstance(){ if(singleton==null) return (singleton = new Singleton()); return singleton; } }