Koray Kırdinli

Yazılım ve İş Yaşamı Hakkında Paylaşımlar

Tasarım Desenleri – Loose Coupling Prensibi (Esnek Bağ)

Loose Coupling bağımlılıkların azaltılması anlamına gelmektedir.Bağımlılıktan kastedilen ise bir sınıfın içinde başka bir sınıfı direk olarak kullanmaktır. Bir nesne diğer nesnenin ne kadar fazla detayını biliyorsa o nesneye o kadar bağımlı demektir. Mantığımız her zaman kullanılan sınıf değiştiğinde bağımlı sınıf bundan ne kadar etkileniyor bunu tespit etmek olmalıdır. Bağımlılıkların olması kaçınılmazdır fakat bunu kontrol etmek de elimizdedir.

Kumanda

Bağımlılığa klasik bir örnek vermek gerekirse ;

Burada kumanda nesnesi görevini yapabilmek için televizyon nesnesine ihtiyaç duymaktadır , bir diğer tabirle kumanda televizyona bağımlıdır.  Peki bize ne zararı var bu bağımlılığın ;

        Tv olmazsa kumanda bir işe yaramaz.

        Tv değiştiğinde kumanda bu değişimden direk etkilenir.

        Kumanda sadece televizyonu kontrol edebilir başka aletleri kontrol edemez.

 

Kodsal Bağımlılık gösterimi aşağıdaki gibi olabilir. Kumanda sınıfının içerisinde Televizyon nesnesi direk kullanılmıştır. Yanlış!!!!

publicclassKumanda

{

    Televizyon tv = newTelevizyon();

 

    publicvoid TelevizyonAc()

    {

        tv.Ac();

    }

}

 

publicclassTelevizyon

{

    publicvoid Ac()

    {

        Console.WriteLine(“Televizyon Açıldı”);

    }

}

Bu şekilde bir kullanım yerine bağımlılığı azaltmak adına araya bir interface koyulabilir ve artık daha esnek ve genişleyebilir bir yapı elde edebiliriz.Doğru!!!

publicinterfaceIKumanda

{

    void Ac();

}

 

publicclassTelevizyon : IKumanda

{

    publicvoid Ac()

    {

        Console.WriteLine(“Televizyon Açıldı…”);

    }

}

 

publicclassRadyo : IKumanda

{

    publicvoid Ac()

    {

        Console.WriteLine(“Radyo Açıldı…”);

    }

}

 

publicclassKumanda

{

    IKumanda _kmd;

    //Constructor da hangi tip aletin kumandası olduğu belirleniyor.

    public Kumanda(IKumanda kmd)

    {

        _kmd = kmd;

    }

    publicvoid Ac()

    {

        _kmd.Ac();

    }

}

Artık kumandayı aşağıdaki şekide kullanabiliriz.

Kumanda k=newKumanda(newTelevizyon);

k.Ac();

Bu tasarımın bize faydası artık kumanda nesnesini istediğimiz bir nesneyi kontrol edebilecek hale getirdik. Daha sonra ihtiyaçlar değiştiğinde buzdolabı kontrol eden bir kumanda gerektiğinde yapmamız gereken tek şey yine IKumanda interface’inden kalıtım almış bir Buzdolabı sınıfı türetmek. Bu durumda Kumanda sınıfı hiçbir değişikliğe uğramadan buzdolabını da kontrol edebilecektir.

Kod geliştirirken aklımızda bulundurmamız gereken en temel tekniklerden bir tanesini loose couplin’i basit olarak öğrenmiş olduk umarım faydalı olmuştur.

Kaynaklar :

Design Patterns in C# (Software Patterns Series) addison wesley

Java Tasarım Desenleri – Özcan Acar

C# 3.0 Design Patterns

October 24, 2010 - Posted by | C# | , , , ,

15 Comments »

  1. […] geliştirtirmeye olanak sağlar. Bu yapısı sayesinde aralarındaki bağımlılık azalır.(bkz : Loose coupling) WCF ,  Windows Workflow Foundation (WF), Microsoft BizTalk Server , Microsoft Silverlight gibi […]

    Pingback by WCF(Windows Communication Foundation) Giriş? « Koray Kırdinli | June 27, 2012 | Reply

  2. […] Kendisi nesneler arasındaki bağımlılığı azaltmak için güzel bir tasarım desenidir. (Bkz:Loose Coupling) Bu deseni uygulamak için Ninject ve Microsoft Enterprise Library Unity Application Block […]

    Pingback by Dependency Injection Tasarım Deseni (Unity) « Koray Kırdinli | October 9, 2012 | Reply

  3. I seldom leave a response, however I read some of the responses
    on Tasarım Desenleri – Loose Coupling Prensibi (Esnek Bağ) | Koray Kırdinli.
    I do have a few questions for you if it’s allright. Could it be only me or does it seem like a few of the comments come across like they are left by brain dead people? :-P And, if you are posting on other online sites, I’d like to follow you.
    Would you post a list of all of all your social sites like your twitter feed, Facebook page or linkedin profile?

    Comment by Ps3 Oyunları | April 28, 2013 | Reply

  4. That is a really good tip particularly to those fresh to the blogosphere.
    Simple but very accurate information… Thank you for sharing this one.
    A must read post!

    Comment by Bettie | May 3, 2013 | Reply

  5. I almost never leave remarks, however after browsing through
    a few of the comments on Tasarım Desenleri
    – Loose Coupling Prensibi (Esnek Bağ) Koray Kırdinli.

    I do have a couple of questions for you if you tend not to mind.
    Is it only me or do a few of the remarks come across as if they are left by brain dead
    folks? :-P And, if you are posting on other places, I’d like to keep up with anything
    fresh you have to post. Would you make a list of every
    one of all your public pages like your linkedin profile, Facebook page or twitter feed?

    Comment by spotify premium code | November 9, 2013 | Reply

  6. Hello to every body, it’s my first pay a quick visit of this web site; this website consists of amazing and actually good data in favor of
    visitors.

    Comment by homepage | December 9, 2013 | Reply

  7. Do you mind if I quote a couple of your articles as long as I provide credit and sources back to your webpage?

    My blog is in the exact same niche as yours and my users would truly benefit from a lot of the information you present here.
    Please let me know if this ok with you. Cheers!

    Comment by Karine | December 10, 2013 | Reply

  8. I was suggested this website through my cousin. I’m not positive whether or not this put
    up is written through him as no one else recognize such distinct
    about my problem. You are wonderful! Thank you!

    Comment by size of smartphone screen | December 11, 2013 | Reply

  9. This piece of writing presents clear idea in support
    of the new users of blogging, that genuinely how to do running a
    blog.

    Comment by Cherie | December 11, 2013 | Reply

  10. I was recommended this website by my cousin. I am not sure whether this post is
    written by him as nobody else know such detailed about my difficulty.

    You’re amazing! Thanks!

    Comment by Jenna | December 20, 2013 | Reply

  11. Marvelous, what a website it is! This webpage presents helpful
    data to us, keep it up.

    Comment by Concepcion | December 31, 2013 | Reply

  12. I was suggested this website by my cousin. I’m not
    sure whether this post is written by him as nobody else know such
    detailed about my difficulty. You’re incredible! Thanks!

    Comment by graphic design | January 26, 2014 | Reply

  13. My brother recommended I might like this blog.
    He was entirely right. This put up actually made my day.
    You can not consider simply how a lot time I had spent
    for this information! Thank you!

    Comment by N/A | February 27, 2014 | Reply

  14. Thanks for sharing your thoughts about muslimah
    fashion blog. Regards

    Comment by blogs | January 12, 2016 | Reply

  15. I almost never drop comments, but i did a few searching and wound up here Tasarım Desenleri –
    Loose Coupling Prensibi (Esnek Bağ) « Koray Kırdinli.
    And I actually do have a couple of questions for you if it’s allright.
    Is it simply me or does it seem like some of these comments come across like written by brain dead folks?
    :-P And, if you are posting on other places, I’d like to follow everything fresh you have to post.
    Could you make a list of every one of your social pages like your
    Facebook page, twitter feed, or linkedin profile?

    Comment by shopping | October 8, 2016 | Reply


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s