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?
» Proxy Pattern » Façade Pattern » Critical Section Pattern » Observer pattern » Virtual Proxy Pattern » Composite Pattern » Read-Write Lock Pattern » Aggregate Enforcer Pattern » Memento pattern » Guarded Suspension Pattern » Counting Proxy Pattern » Abstract Factory Pattern » Template Method pattern » Builder Pattern » Decorator Pattern » Object Authenticator Pattern » Common Attribute Registry Pattern » Singleton Pattern » pattern » Adapter Pattern » Flyweight Pattern » Consistent Lock Order Pattern » Bridge Pattern » Chain of responsibility pattern » Factory Method Pattern » Prototype Pattern » Command pattern » Object Cache Pattern » Explicit Object Release Pattern » Interpreter pattern » Iterator pattern » State pattern » Null Object Pattern » Visitor pattern » Mediator 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