Dependency Injection ve Loosely Coupling


// C# da Dependency Injection ve Loosely Coupling

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication10
{

#region Bagimlilik çözümü icin kullanılan arayuz
interface IMouse
{
void Write();

}
#endregion

#region Sonradan Ekledik…
class IbmMouse : IMouse
{
public void Write()
{
Console.WriteLine(“IBM Mouse Kullanıldı”);
}
}
#endregion

//İki Faremiz var Logitech
class LogitechMouse:IMouse
{
public void Write()
{
Console.WriteLine(“Logitech Mouse Kullanıldı”);
}
}
//Digeri A4
class A4TechMouse:IMouse
{
public void Write()
{
Console.WriteLine(“A4Tech Mouse Kullanıldı”);
}
}

//İş katmanımız tüm akısı yönetiyor
//ama IBM faresi gelince iş katmanında değisim gerekiyor
//ınıf iceriginin değişimi OOP da istemegen bir konu zira daha yuksek seviyede bu sınıfı kullanan bilesenlerde istenmeyen degisimlere yol acar…
//Madem farelerin temel islevi yazmak bunu saglıyacak Interface tanımlayıp taban sınıflarına tanımlarız boylece
//İş katmanın bu temel sınıflara sıkı sıkıya baglılıgını azaltabiliriz ; gevşek bagımlılık…
//Burda sınıfın kurucusu üzerinden enjekte prensibi uygulanıyor…
class MouseManager
{
private readonly IMouse mos;
internal MouseManager(IMouse ms)
{
mos = ms;
}

public void Use()
{
// IBM faresi girmeden once is katmanımız her sınıfı tanımlamak ve bilmek zorunda….
// LogitechMouse mouse = new LogitechMouse();

//Artık iş katmanımız sadece gerekli bilgi ile donatıldı sınıflar ile ilgisi kesildi…
// tek bilgiği arayuzmuzdeki soyut metot…
mos.Write();
// mouse.Write();
}
}

class Program
{
static void Main(string[] args)
{

// MouseManager manager = new MouseManager();
MouseManager mm = new MouseManager(new IbmMouse());
mm.Use();
}
}
}
// işin özü is katmanımızın bagımlı oldugu iş akısına dısardan mudahele ederek daha zahmetsizce akısı //geliştiriyoruz, OOP temel ilklerinden biride bir sınıfı geliştirmeye acık tutmak ama değiştirmeye //kapamaktır…

Reklamlar

Fikriniz varmış,malınız gibi paylaşınız...

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Connecting to %s