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.

Apr 13, 2025 - 20:34
 0

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.