Şablon yöntemi ve strateji desen arasındaki fark nedir? | Netgez.com
SORU
21 Mart 2009, CUMARTESÄ°


Şablon yöntemi ve strateji desen arasındaki fark nedir?

Birisi şablon yöntemi ile desen arasındaki fark nedir açıklayın bana desen strateji misiniz?

BildiÄŸim kadarıyla söyleyebilirim, onlar ™ aynı tek farkı bu ÅŸablon metot kalıbı olan bir soyut sınıf gibi temel sınıf ise strateji sınıfı kullanan bir arayüz uygulanmış olduÄŸu her somut strateji sınıf.

Ancak, bildiğim kadarıylaistemciaynı şekilde tüketilir ilgilidir - bu doğru mu?

CEVAP
21 Mart 2009, CUMARTESÄ°


İkisi arasındaki temel fark beton algoritması seçildiğinde.

İleŞablon metot kalıbıbu böyle olurderleme zamanıtarafındansınıflaraşablonu. Her bir alt şablonu soyut yöntemler uygulayarak farklı somut bir algoritma sağlar. Bir istemci şablonu dış arabirim yöntemleri istediğinde şablon algoritma çağırmak için gerekli soyut yöntemleri (iç arayüz) çağırır.

class ConcreteAlgorithm : AbstractTemplate
{
    void DoAlgorithm(int datum) {...}
}

class AbstractTemplate
{
    void run(int datum) { DoAlgorithm(datum); }

    virtual void DoAlgorithm() = 0; // abstract
}

Buna karşılık,Strateji desenbir algoritma seçilmesine olanak verirçalışma zamanıtarafındançevreleme. Beton algoritmaları belirleyici bir yöntem için kendi kurucusuna bir parametre olarak strateji geçirilir ayrı sınıfları veya işlevleri yürütür. Bu parametre için seçilen dinamik olarak programın devlet veya girişlerine bağlı olarak değişebilir.

class ConcreteAlgorithm : IAlgorithm
{
    void DoAlgorithm(int datum) {...}
}

class Strategy
{
    Strategy(IAlgorithm algo) {...}

    void run(int datum) { this->algo.DoAlgorithm(datum); }
}

Özet olarak:

  • Yöntem desen ÅŸablon:derleme zamanıalgoritma seçimisınıflara
  • Strateji desen:çalışma zamanı algoritmasıseçim tarafındançevreleme

Bunu PaylaÅŸ:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VÄ°DEO

Rastgele Yazarlar

  • gsipek

    gsipek

    20 Temmuz 2007
  • Moto Journal

    Moto Journal

    28 Mayıs 2007
  • RyanXLT

    RyanXLT

    22 Ocak 2011