*256 Bit SSL Sertifikası * Full Mobil Uyumlu * Full SEO Uyumlu
İsterseniz Mobil Uygulama Seçeneğiyle
C# OOP'de Strategy Tasarım Deseni Kullanımı
C# OOP'de strategy tasarım deseni, yazılım geliştiricilerin karmaşık ve değişken sistemler hakkında düşünmelerini kolaylaştırır. Bu tasarım deseni, kodların yeniden kullanılabilirliğini artırır ve ayrıca açık bir yapıya sahip olduğu için, kodu temiz ve düzenli tutmanıza yardımcı olur.
Strategy tasarım deseni, Open-Closed prensibine dayanır, yani yazılımın davranışını değiştirmek, sınıf hiyerarşisinde yer alan sınıfları değiştirme ihtiyacını ortadan kaldırır. Bu tasarım deseni, değişen gereksinimlerde herhangi bir değişiklik yapmadan yazılımın davranışını değiştirme esnekliği sağlar.
Strateji Tasarım Deseni Örneği
Bir araç satış uygulaması yazmayı planladığımızı düşünelim. Bu uygulama, satın alınan araç türüne göre farklı fiyat hesaplamaları yapacak.
Öncelikle bir araç sınıfı oluşturalım, bu sınıfın içerisinde fiyat hesaplama metodu yer alsın. Ancak, her araç türü için fiyat hesaplama yöntemi farklıdır.
```csharp
public class Araba
{
public double Fiyat { get; set; }
public double HesaplaFiyat()
{
return Fiyat;
}
}
public class Motosiklet
{
public double Fiyat { get; set; }
public double HesaplaFiyat()
{
return Fiyat * 0.9;
}
}
public class Kamyon
{
public double Fiyat { get; set; }
public double HesaplaFiyat()
{
return Fiyat * 1.2;
}
}
```
Bu yaklaşım, araç sınıflarının kullanılması sırasında yöntem üzerinde değişiklik yapmak zorunda kalmamıza neden olacaktır ve böylece bu uygun bir çözüm değildir. Bu sorunu çözmek için, strategy tasarım deseni kullanabiliriz.
```csharp
public interface IFiyatHesapla
{
double HesaplaFiyat(double fiyat);
}
public class ArabaFiyatHesapla : IFiyatHesapla
{
public double HesaplaFiyat(double fiyat)
{
return fiyat;
}
}
public class MotosikletFiyatHesapla : IFiyatHesapla
{
public double HesaplaFiyat(double fiyat)
{
return fiyat * 0.9;
}
}
public class KamyonFiyatHesapla : IFiyatHesapla
{
public double HesaplaFiyat(double fiyat)
{
return fiyat * 1.2;
}
}
public class Arac
{
private readonly IFiyatHesapla _fiyatHesapla;
public Arac(IFiyatHesapla fiyatHesapla)
{
_fiyatHesapla = fiyatHesapla;
}
public double Fiyat { get; set; }
public double HesaplaFiyat()
{
return _fiyatHesapla.HesaplaFiyat(Fiyat);
}
}
```
Burada, Arac sınıfı için bir IFiyatHesapla arayüzü tanımladık. Bu arayüz, fiyat hesaplaması için gerekli olan tek metodu içermektedir. Ardından, her araçtipi için ayrı bir sınıf oluşturduk ve arayüzü uygulayarak hesaplama metodunu sağladık.
Son olarak, Arac sınıfında, IFiyatHesapla arayüzünü alacak parametreli bir yapıcı metod tanımladık. Bu sayede, her araçtipi için farklı bir IFiyatHesapla nesnesi oluşturabiliriz.
Bir arabayı hesaplama yöntemini kullanmak için, Arac sınıfını aşağıdaki şekilde oluşturabiliriz.
```csharp
var araba = new Arac(new ArabaFiyatHesapla());
araba.Fiyat = 10000;
var fiyat = araba.HesaplaFiyat();
```
Bir motosikleti hesaplama yöntemini kullanmak için, Arac sınıfını aşağıdaki şekilde oluşturabiliriz.
```csharp
var motosiklet = new Arac(new MotosikletFiyatHesapla());
motosiklet.Fiyat = 5000;
var fiyat = motosiklet.HesaplaFiyat();
```
Sık Sorulan Sorular
1. Strategy tasarım deseni ile neden kısa kod yazılabilir?
Strategy tasarım deseni, kodun yeniden kullanılabilirliği sayesinde, kodun daha kısa ve açık bir şekilde yazılmasını sağlar. Ayrıca her tür için ayrı bir sınıf oluşturmaktan ziyade, İnterface üzerinden kod tekrarı yapılmaz.
2. Strategy tasarım desenini ne zaman kullanmalıyım?
Strategy tasarım deseni, değişken davranış için kullanılması önerilir. Özellikle gereksinimlerin sık sık değiştiği durumlarda, bu tasarım deseni kullanılabilir.
3. Arayüzler arasındaki fark nedir? Sınıflar arasındaki fark nedir?
Arayüzler, sınıfların uygulayabileceği işlevleri tanımlar. Sınıflar, arayüzleri uygulayarak bu işlevleri gerçekleştirir. Arayüzler, sınıfların birbirleriyle haberleşmelerinde kullanılırken, sınıflar birbirinden ayrı ayrı işlemler gerçekleştirir."
C# OOP'de Strategy Tasarım Deseni Kullanımı
C# OOP'de strategy tasarım deseni, yazılım geliştiricilerin karmaşık ve değişken sistemler hakkında düşünmelerini kolaylaştırır. Bu tasarım deseni, kodların yeniden kullanılabilirliğini artırır ve ayrıca açık bir yapıya sahip olduğu için, kodu temiz ve düzenli tutmanıza yardımcı olur.
Strategy tasarım deseni, Open-Closed prensibine dayanır, yani yazılımın davranışını değiştirmek, sınıf hiyerarşisinde yer alan sınıfları değiştirme ihtiyacını ortadan kaldırır. Bu tasarım deseni, değişen gereksinimlerde herhangi bir değişiklik yapmadan yazılımın davranışını değiştirme esnekliği sağlar.
Strateji Tasarım Deseni Örneği
Bir araç satış uygulaması yazmayı planladığımızı düşünelim. Bu uygulama, satın alınan araç türüne göre farklı fiyat hesaplamaları yapacak.
Öncelikle bir araç sınıfı oluşturalım, bu sınıfın içerisinde fiyat hesaplama metodu yer alsın. Ancak, her araç türü için fiyat hesaplama yöntemi farklıdır.
```csharp
public class Araba
{
public double Fiyat { get; set; }
public double HesaplaFiyat()
{
return Fiyat;
}
}
public class Motosiklet
{
public double Fiyat { get; set; }
public double HesaplaFiyat()
{
return Fiyat * 0.9;
}
}
public class Kamyon
{
public double Fiyat { get; set; }
public double HesaplaFiyat()
{
return Fiyat * 1.2;
}
}
```
Bu yaklaşım, araç sınıflarının kullanılması sırasında yöntem üzerinde değişiklik yapmak zorunda kalmamıza neden olacaktır ve böylece bu uygun bir çözüm değildir. Bu sorunu çözmek için, strategy tasarım deseni kullanabiliriz.
```csharp
public interface IFiyatHesapla
{
double HesaplaFiyat(double fiyat);
}
public class ArabaFiyatHesapla : IFiyatHesapla
{
public double HesaplaFiyat(double fiyat)
{
return fiyat;
}
}
public class MotosikletFiyatHesapla : IFiyatHesapla
{
public double HesaplaFiyat(double fiyat)
{
return fiyat * 0.9;
}
}
public class KamyonFiyatHesapla : IFiyatHesapla
{
public double HesaplaFiyat(double fiyat)
{
return fiyat * 1.2;
}
}
public class Arac
{
private readonly IFiyatHesapla _fiyatHesapla;
public Arac(IFiyatHesapla fiyatHesapla)
{
_fiyatHesapla = fiyatHesapla;
}
public double Fiyat { get; set; }
public double HesaplaFiyat()
{
return _fiyatHesapla.HesaplaFiyat(Fiyat);
}
}
```
Burada, Arac sınıfı için bir IFiyatHesapla arayüzü tanımladık. Bu arayüz, fiyat hesaplaması için gerekli olan tek metodu içermektedir. Ardından, her araçtipi için ayrı bir sınıf oluşturduk ve arayüzü uygulayarak hesaplama metodunu sağladık.
Son olarak, Arac sınıfında, IFiyatHesapla arayüzünü alacak parametreli bir yapıcı metod tanımladık. Bu sayede, her araçtipi için farklı bir IFiyatHesapla nesnesi oluşturabiliriz.
Bir arabayı hesaplama yöntemini kullanmak için, Arac sınıfını aşağıdaki şekilde oluşturabiliriz.
```csharp
var araba = new Arac(new ArabaFiyatHesapla());
araba.Fiyat = 10000;
var fiyat = araba.HesaplaFiyat();
```
Bir motosikleti hesaplama yöntemini kullanmak için, Arac sınıfını aşağıdaki şekilde oluşturabiliriz.
```csharp
var motosiklet = new Arac(new MotosikletFiyatHesapla());
motosiklet.Fiyat = 5000;
var fiyat = motosiklet.HesaplaFiyat();
```
Sık Sorulan Sorular
1. Strategy tasarım deseni ile neden kısa kod yazılabilir?
Strategy tasarım deseni, kodun yeniden kullanılabilirliği sayesinde, kodun daha kısa ve açık bir şekilde yazılmasını sağlar. Ayrıca her tür için ayrı bir sınıf oluşturmaktan ziyade, İnterface üzerinden kod tekrarı yapılmaz.
2. Strategy tasarım desenini ne zaman kullanmalıyım?
Strategy tasarım deseni, değişken davranış için kullanılması önerilir. Özellikle gereksinimlerin sık sık değiştiği durumlarda, bu tasarım deseni kullanılabilir.
3. Arayüzler arasındaki fark nedir? Sınıflar arasındaki fark nedir?
Arayüzler, sınıfların uygulayabileceği işlevleri tanımlar. Sınıflar, arayüzleri uygulayarak bu işlevleri gerçekleştirir. Arayüzler, sınıfların birbirleriyle haberleşmelerinde kullanılırken, sınıflar birbirinden ayrı ayrı işlemler gerçekleştirir."
*256 Bit SSL Sertifikası * Full Mobil Uyumlu * Full SEO Uyumlu
İsterseniz Mobil Uygulama Seçeneğiyle