Gerçek dünya seneryosu:
Son zamanlarda iş ilanlarında belli stack'leri yoğun olarak görmekteyiz örneğin dotnet+angular veya react+go gibi bu sebeple dotnet ve angular bir stack veya object family'si olarak görebiliriz aynı zamanda react ve go yu bir stack veya object family olarak görebiliriz.
Basitçe :
Abstract Factory : Fabrika metotlardan oluşan bir class'ıdır.
Abstract Factory : Birbirleriye yakın ilşikisi olan nesneleri yaratım problemini bir araya toplar, birbirleriyle ilişkisi olmayan yapılar aynı abstract factory'ye koyulmamalıdır!!!
Abstract Factory : tekil veya birliktelik ifade edennesneleri yaratılma işlemini alt-class'lara yükler.
Yazılım Örneğin?
public interface IBeDeveloper { } public interface IFeDeveloper { } public interface IAbstractFactory { IFeDeveloper CreateFeDeveloper(); IBeDeveloper CreateBeDeveloper(); }
public class AngularDeveloper : IFeDeveloper { } public class DotnetDeveloper : IBeDeveloper { }
public class ReactDeveloper : IFeDeveloper { } public class GoDeveloper : IBeDeveloper { }
public class StackOneAbstractFactory : IAbstractFactory { public IBeDeveloper CreateBeDeveloper() { return new DotnetDeveloper(); } public IFeDeveloper CreateFeDeveloper() { return new AngularDeveloper(); } }
public class StackTwoAbstractFactory : IAbstractFactory { public IBeDeveloper CreateBeDeveloper() { return new GoDeveloper(); } public IFeDeveloper CreateFeDeveloper() { return new ReactDeveloper(); } }
public class Client { private readonly IAbstractFactory _abstractFactory; public Client(IAbstractFactory abstractFactory) { _abstractFactory = abstractFactory; } public void Run() { var feDeveloper = _abstractFactory.CreateFeDeveloper(); var beDeveloper = _abstractFactory.CreateBeDeveloper(); } }
public class Program { static void Main(string[] args) { IAbstractFactory factory = new StackOneAbstractFactory(); var client = new Client(factory); client.Run(); factory = new StackTwoAbstractFactory(); client = new Client(factory); client.Run(); } }
Abstract factory birbirlye ilşkili olan nesnelerin yaratımını kapsüller,böylece hem karmaşa önlenir hem de daha temiz bir kod yapısına geçilebilir.
Ne zaman kullanılmalı ?
İlişkili nesnelerin veya bir nesne ailesinin olduğu yerde abstract factory kullanılabilir. Örneğimiz nesne ailesi stack'lerdir.
Top comments (0)