Inversion of Control (IoC) Nedir ?

Inversion of Control, uygulama içerisinde nesne bağımlılıklarının yönetimini developer'dan alan bir yöntemdir. Bu yöntem ile, projedeki bağımlılıkların oluşturulmasını geliştiricinin yapması yerine belli bir mekanizmanın yapması olarak tanımlanabilir. (Frameworkler örnek gösterilebilir).

IoC kullanılmadan yazılan örnek bir kod bloğu:

public class IOC {
	public MyClass _class;
	public IOC(){
		_class = new MyClass();
	}
}

Yukarıdaki ufak örnekte IOC classı içerisinde MyClass adlı class'ı constructor içerisinde kendi oluşturuyor. Bu şu anlama geliyor; MyClass sınıfı dolaylı yoldan da olsa IOC sınıfına bağlıdır. Bu durumda IOC sınıfının değişmesi, bu değişiklikten bir haber olan MyClass sınıfını da etkileyecektir.

IOC kullanılarak yazılan örnek bir kod bloğu:

public class IOC {
	public IMyClass _class;
	public setAnotherClass(IMyClass class) {
		this._class = class;
	}
	public IOC() {
		IOC.use(this._class); // Instance oluşturma
	}
}

Burada interface kullanmamızın sebebi (IMyClass), IMyClass sınıfının şartlarını sağlayan herhangi bir sınıf IOC sınıfında üretilebilir. Artık IOC class'ı, oluşturulmak istenen sınıfın nereden geldiğini önemsemiyor.

İyi çalışmalar dilerim.