Yazarlar Sözlük Makaleler Yardım Masası Gözlük Forum İstatistik

Tüm Başlıklar XML

1.  Farklı algoritmalarla çalışabilecek kod yazmanın sözkonusu olduğu durumlarda kulanılabilecek bir patterndir.

Örneğin bir dizinin elemanlarını sıralamak çok değişik şekillerde yapılabilir. Bu iş için Bubble, Quick, Merge gibi algoritmalar vardır. (bkz. sorting algorithms) Dizinin yapısına göre bir algoritma diğerinden daha kullanışlıdır. Elinizdeki diziyi duruma göre farklı bir algoritmaya sıralatmak isterseniz bu pattern'i kullanabilirsiniz.

Bunun için mesela ISorter adında bir interface tanımlar, buna Sort adında bir metod ekler, parametre olarak gönderdiğiniz diziyi sıralamasını sağlarsınız. Yani Şöyle:

interface ISorter {
   List Sort(List dizi);
}

Bu interface'i implement eden sorterlar yazılır:
class BubbleSorter : ISorter {
   public List Sort(List dizi){
       // buble sıralama implementasyonu
   }
}

class MergeSorter : ISorter {
   public List Sort(List dizi){
       // merge sıralama implementasyonu
   }
}

// ... vs..

Son olarak bu sorter'lardan herhangi birinin kullanabilen bir sınıf yazılır:
public class Sorter {

   private ISorter sorter;

   public Sorter(ISorter hangisi){
      this.sorter = hangisi;
   }

   List Sort(List dizi){
      return this.sorter.Sort(dizi);
   }
}

Artık dilediğimiz sorter'ı kullanabiliriz:
Sorter s1 = new Sorter(new BubbleSorter());
s1.Sort(dizi);

Sorter s2 = new Sorter(new MergeSorter());
s2.Sort(baskaDizi);

// gibi..

fizikci
29 Ocak 2007 11:31
Bu konuda bildiklerinizi bizlerle paylaşabilirsiniz
Tabi bunun için yazarsanız giriş yapmalı, yazar değilseniz yazar olmalısınız.


Bu başlığa bkz veren girişlerin başlıkları nedir?

Bu başlığa bkz veren girişler başka hangi başlıklara bkz verdiler?
» Read-Write Lock Pattern » Flyweight Pattern » Observer pattern » Factory Method Pattern » Guarded Suspension Pattern » Consistent Lock Order Pattern » Explicit Object Release Pattern » Memento pattern » Prototype Pattern » Chain of responsibility pattern » Façade Pattern » Abstract Factory Pattern » Mediator pattern » Template Method pattern » Composite Pattern » Visitor pattern » Iterator pattern » pattern » Virtual Proxy Pattern » Singleton Pattern » Interpreter pattern » Aggregate Enforcer Pattern » Object Authenticator Pattern » Decorator Pattern » Builder Pattern » State pattern » Object Cache Pattern » Counting Proxy Pattern » Bridge Pattern » Adapter Pattern » Common Attribute Registry Pattern » Proxy Pattern » Command pattern » Critical Section Pattern » Null Object Pattern

© 2005, Bilişim Kulübü. (1109 ms)
Ne yapabilirsin: SubtitleClick ile İngilizceni Geliştir, Çınar Framework ile kod yaz, Eglencelik.org'ta biraz eğlen