Merhaba, Ne kadar okuduysam da injection pattern'i tam olarak kafamda oturtamadım, yaşadığınız tecrübelerden, mesela injection olmasaydı neler yapmanız gerekirdi, olduğunda neler yaptınız gibi birkaç örnek vermeniz mümkün müdür? hatta içinde kod olursa çok daha güzel olur..

soruldu: 12 Ağu '13, 16:03

dreampowder's gravatar image

dreampowder
3.3k112849
cevap kabul oranı: 23%

değiştirildi: 13 Ağu '13, 02:14

%C3%B6zcanacar's gravatar image

özcanacar ♦♦
17.2k59183183


Örneğin çok formlu bir SWING uygulamanız var. Ana form bir tane olmak koşuluyla diğer formlar birden fazla olabilir ve her nesne form ana forma erişmek isteyebilir. Bu durumda her form için ana formun göstericisini parametreyle göndermeniz gerekir normal şartlarda. Bu tabiki fazladan kod yazmak ve metodlara gelen parametreleri arttırmak anlamına gelir ki bu bir noktadan sonra kontrolü zorlaşmaya başlar. Bu durumda zaten her halükarda bir tane olacak olan ana formun referansını diğer classlara inject etmek isteyebilirsiniz.

Yada birtane DB connection classınız vardır. App init zamanında bu nesneyi bir defa oluşturup injector'a bind edersiniz ve ondan sonra her yeni oluşturulan nesnelere bunu inject edebilirsiniz. Böylece her class içerisinde tekrar connect olmaya çalışmazsınız.

Uygulama boyunca mevcut olacak olan bir nesneyi bir süreliğine mevcut olacak olan nesnelere inject etmektir işin aslı. Kullanım alanı oldukça geniş.

permanent link

cevaplandı: 13 Ağu '13, 00:42

kodmanyagha's gravatar image

kodmanyagha
3.1k132852
cevap kabul oranı: 15%

Son paragraf özellikle çok güzel özetlemiş teşekkürler

(13 Ağu '13, 02:15) dreampowder dreampowder's gravatar image

Birde arkadaşlarımızın isimlerini görebilsek, yani manyak demek istemiyorum! Son satır dikkatimi çekti, singleton tasarım deseni halihazırda bunu sağlamıyormu? Benim en çok merak ettiğim ( java' ya has değil, diğer dillerde de ) neden injection işlemi yapılıyor? Tekilliği sağlamak zaten mümkün iken. Buna tanım kargaşası diyebilirmiyiz?

(13 Ağu '13, 05:32) Oğuz Çelikdemir O%C4%9Fuz%20%C3%87elikdemir's gravatar image

Araştırdığım zaman en azından test anlamında singleton deseni, injection desenine göre daha az işlevsel kalıyor deniyor. buna bir örnek olarak linkteki anlatımı buldum: http://googletesting.blogspot.com/2008/05/tott-using-dependancy-injection-to.html

(13 Ağu '13, 05:50) dreampowder dreampowder's gravatar image

Singelton dememiz dogru olmaz. Örnegin Spring de singleton olmayan nesneleri (prototype) de injecte edebiliyoruz. Belki Factory Patterne daha yakin diye tanimliyabiliriz.

(13 Ağu '13, 05:52) mahmut_can ♦ mahmut_can's gravatar image

Signleton, bir classın app boyunca bir tane olması mantığıdır. Dependency Injection ise singleton'ı kapsayan daha geniş bir mantıktır. Singleton olmasa DI da olmazdı. Tekilliği başka şekilde nasıl sağlarsınız? Static ifadesiyle mi yoksa application context'e nesne atmakla mı? App context nesneleri atma yeri mi? Yada bir nesneyi static yaptığınız zaman farklı sessionlar (kullanıcılar) için o nesne sıkıntı çıkarmaz mı? Singleton olan nesnelerin daha iyi yönetilmesi için dependency injection şart.

(13 Ağu '13, 13:07) kodmanyagha kodmanyagha's gravatar image

o zaman Dependency Injection singleton üzerine kurulmuştur diyebilir miyiz?

(13 Ağu '13, 13:17) dreampowder dreampowder's gravatar image

Tam olarak diyemeyiz. DI mevcut bir nesneyi başka bir nesne tarafından kullanılmasını sağlar. Kullanılacak olan nesne singleton olabilir de olmayabilir de. App'in durumuna göre değişir ama çoğu zaman singletondır.

(14 Ağu '13, 00:32) kodmanyagha kodmanyagha's gravatar image
7 yorumdan 5 tanesi gösteriliyor hepsini göster
Cevabınız
toggle preview

Bu soruyu takip et

E-Posta üzerinden:

Üyelik girişi yaptıktan sonra abonelik işlemlerini yapabilirsiniz

RSS üzerinden:

Cevaplar

Cevaplar ve Yorumlar

Yazı Formatlama

  • *italic* ya da _italic_
  • **bold** ya da __bold__
  • link:[text](http://url.com/ "başlık")
  • resim?![alt text](/path/img.jpg "başlık")
  • liste: 1. Foo 2. Bar
  • temel HTML etiketleri de kullanılabilir

Bu sorunun etiketleri:

×1,077
×5
×1

Soruldu: 12 Ağu '13, 16:03

Görüntüleme: 740 kez

Son güncelleme: 14 Ağu '13, 00:32

powered by BitNami OSQA