Strategy Tasarım Deseni Örnek

ilhan DEMİRTEPE
2 min readFeb 1, 2021

--

Bütün Kodlar

public enum DeveloperType

{

FrontEnd,

FullStack

}

public class YazilimciMaasRapor

{

public int Id { get; set; }

public string Adi { get; set; }

public DeveloperType Type { get; set; }

public int CalistigiSaat { get; set; }

public double SaatBasiUcret { get; set; }

public double MaasHesapla() => CalistigiSaat * SaatBasiUcret;

}

public interface IMaasHesapla

{

double ToplamMaasHesapla(IEnumerable<YazilimciMaasRapor> rapor);

}

public class FrontEndMaasHesapla : IMaasHesapla

{

public double ToplamMaasHesapla(IEnumerable<YazilimciMaasRapor> rapor) =>

rapor.Where(r => r.Type == DeveloperType.FrontEnd).Select(r => r.MaasHesapla()).Sum();

}

public class FullStackMaasHesapla : IMaasHesapla

{

public double ToplamMaasHesapla(IEnumerable<YazilimciMaasRapor> rapor) =>

rapor.Where(r => r.Type == DeveloperType.FullStack) .Select(r => r.MaasHesapla() * 1.2) .Sum();

}

public class SalaryCalculator

{

private IMaasHesapla _hesapla;

public SalaryCalculator(IMaasHesapla hesapla)

{

_hesapla = hesapla;

}

public void SetHesaplama(IMaasHesapla maasHesapla) => _hesapla = maasHesapla;

public double Hesapla(IEnumerable<YazilimciMaasRapor> raporlar) => _hesapla.ToplamMaasHesapla(raporlar);

}

class Program

{

static void Main(string[] args)

{

var reports = new List<YazilimciMaasRapor>

{

new YazilimciMaasRapor { Id = 2, Adi = “developer 1”, Type = DeveloperType.FrontEnd, SaatBasiUcret = 30, CalistigiSaat = 130 },

new YazilimciMaasRapor { Id = 4, Adi = “developer 2”, Type = DeveloperType.FullStack, SaatBasiUcret = 60, CalistigiSaat = 140 },

new YazilimciMaasRapor { Id = 1, Adi = “developer 3”, Type = DeveloperType.FrontEnd, SaatBasiUcret = 30, CalistigiSaat = 160 },

new YazilimciMaasRapor { Id = 5, Adi = “developer 4”, Type = DeveloperType.FullStack, SaatBasiUcret = 60, CalistigiSaat = 140 }

};

var hesapContext = new SalaryCalculator(new FrontEndMaasHesapla());

var frontEndToplam = hesapContext.Hesapla(reports);

Console.WriteLine($”FrontEnd Maaşı: {frontEndToplam}”);

hesapContext.SetHesaplama(new FullStackMaasHesapla());

var fulltackToplam = hesapContext.Hesapla(reports);

Console.WriteLine($”FullStack Maaşı: {fulltackToplam}”);

Console.WriteLine($”Toplam Maaş: {frontEndToplam + fulltackToplam}”);

Console.ReadLine();

}

}

--

--

ilhan DEMİRTEPE
ilhan DEMİRTEPE

No responses yet