Programlamada Tasarım Desenleri #17 — Template Design Pattern (dotnet c#)

Programlamada Tasarım Desenleri #17 — Template Design Pattern (C# ile Uygulama)

Yazılımda Tekrar Eden İş Akışlarını Şablonlarla Yönetin


Kategori: Yazılım Geliştirme, C#, Tasarım Desenleri
Etiketler: Template Design Pattern, C# Tasarım Deseni, .NET, Yazılım Mimarisi, OOP, Behavioral Patterns


Modern yazılım geliştirme süreçlerinde tekrar eden iş mantıklarını yeniden yazmak hem zaman kaybıdır hem de hata ihtimalini artırır. Bu noktada devreye giren Template Design Pattern (Şablon Tasarım Deseni), yazılımda kod tekrarını önleyen ve bir işlemin adımlarını tanımlayan harika bir çözümdür. Bu yazıda Template Design Pattern nedir, .NET C# dünyasında nasıl kullanılır, hangi senaryolarda tercih edilir ve gerçek dünya kod örnekleriyle nasıl uygulanır gibi konuları mercek altına alacağız.


📌 Template Design Pattern Nedir?

Template Design Pattern, davranışsal (behavioral) tasarım desenleri arasında yer alır. Bu desenin temel amacı, bir işlemin iskeletini (template – şablon) belirlemek; ancak belirli adımların implementasyonunu alt sınıflara (subclass) bırakmaktır.

Bu yapı sayesinde kodda:

  • Ortak iş akışı (workflow) korunur
  • Alt sınıflar sadece özelleştirmelerle ilgilenir
  • Kod tekrarı azalır ve bakım kolaylaşır

Programmer working on a laptop


🧠 Ne Zaman Kullanılır?

Template Pattern aşağıdaki durumlarda son derece faydalıdır:

  • Süreç adımları belli ancak her adım farklı şekilde çalışacaksa
  • Kodda tekrarlar varsa
  • Alt sınıfların bazı işlemleri kendi ihtiyaçlarına göre uyarlaması gerekiyorsa
  • Veri işleme, belge oluşturma, veri dönüştürme gibi süreçlerde ortak bir akış kullanılıyorsa

Template Design Pattern workflow


🔧 Yapısal Şema

Bir Template Design Pattern genelde şu yapıdadır:

abstract class TemplateBase {
    public void TemplateMethod() {
        Step1();
        Step2();
        Step3();
    }

    protected abstract void Step1();
    protected abstract void Step2();
    protected virtual void Step3() {
        // Opsiyonel adım - override edilebilir
    }
}

TemplateMethod(): Adım adım işlemi tanımlar – değişmez.
Step1(), Step2(): Alt sınıflar tarafından doldurulur.
Step3(): İsteğe bağlı özelleştirilebilir.


🧪 C# ile Template Design Pattern Örneği

Bir senaryo düşünelim: Kullanıcıya farklı formatlarda “Rapor” üretmek istiyoruz. Ortak adımlar:

  1. Veriyi hazırla
  2. Başlık oluştur
  3. İçeriği oluştur
  4. Veri çıktısını paylaş (PDF, HTML, Excel vs.)

📄 1. Abstract (Şablon) Sınıf

public abstract class ReportGenerator
{
    public void GenerateReport()
    {
        FetchData();
        GenerateHeader();
        GenerateBody();
        ExportReport();
    }

    protected abstract void FetchData();
    protected abstract void GenerateHeader();
    protected abstract void GenerateBody();
    protected abstract void ExportReport();
}

🧾 2. HTML Rapor Oluşturucu

public class HtmlReport : ReportGenerator
{
    protected override void FetchData()
    {
        Console.WriteLine("Veriler veritabanından alındı.");
    }

    protected override void GenerateHeader()
    {
        Console.WriteLine("

HTML Rapor Başlığı

"); } protected override void GenerateBody() { Console.WriteLine("

Rapor içeriği burada...

"); } protected override void ExportReport() { Console.WriteLine("HTML dosyası olarak dışa aktarıldı."); } }

📃 3. PDF Rapor Oluşturucu

public class PdfReport : ReportGenerator
{
    protected override void FetchData()
    {
        Console.WriteLine("Veriler API üzerinden alındı.");
    }

    protected override void GenerateHeader()
    {
        Console.WriteLine("PDF Başlık oluşturuldu.");
    }

    protected override void GenerateBody()
    {
        Console.WriteLine("PDF Gövdesi hazırlandı.");
    }

    protected override void ExportReport()
    {
        Console.WriteLine("PDF belgesi olarak dışa aktarıldı.");
    }
}

🧪 4. Kullanımı

class Program
{
    static void Main(string[] args)
    {
        ReportGenerator htmlReport = new HtmlReport();
        htmlReport.GenerateReport();

        Console.WriteLine("-----------------------");

        ReportGenerator pdfReport = new PdfReport();
        pdfReport.GenerateReport();
    }
}

🖼️ UML Diyagramı

Template Design Pattern UML

Kaynak: Refactoring.Guru


💡 Template Design Pattern’ın Avantajları

  • ✅ Kod tekrarı azaltır
  • ✅ Yazılımın okunabilirliğini artırır
  • ✅ Yeni sınıflar kolayca eklenebilir
  • ✅ Katı bir iskelet sağlar, hataya açık durumları azaltır
  • ✅ Açık/kapalı prensibini destekler (SOLID – OCP)

⚠️ Dikkat Edilmesi Gerekenler

  • 🔸 Aşırı kullanımı sınıf hiyerarşisini şişirebilir
  • 🔸 Her adımda gereksiz soyutlama projeyi karmaşık hale getirebilir

💻 Gerçek Hayatta Kullanım Örnekleri

  • Haber veya içerik yönetim sistemlerindeki “Farklı rapor biçimi” ihtiyaçlarında
  • Oyun motorlarında AI davranışı tanımlarken
  • ETL (Extract-Transform-Load) işlemlerinde veri işleme pipeline’larında
  • Dosya işleyiciler: TXT, CSV, XML okuma & işleme

Creative workspace filled with coding books


🤔 Sonuç: Template Method ile Mühendislik Yaklaşımı

Bu desen, mühendislikte modülerliği ve temiz mimariyi destekler. Alt sınıfların yalnızca işlerine yarayan adımlara odaklanması sayesinde, yazılım geliştiriciler daha üretken ve sürdürülebilir bir kod altyapısına sahip olur.

.NET ekosisteminde kolayca uygulanabilir olması, C# dil özellikleriyle uyumlu yapısı bu deseni güçlü kılan noktalar arasında.


🔍 SEO İçin Anahtar Kelime Önerileri

  • Template design pattern c# örnek
  • Template method pattern nedir
  • .NET design patterns
  • Behavioral design patterns c#
  • Yazılımda tasarım kalıpları
  • C# OOP design pattern

📚 Kaynaklar

  • Martin Fowler – Patterns of Enterprise Application Architecture
  • Refactoring.Guru – Template Method
  • Gang of Four (GoF) – Design Patterns: Elements of Reusable Object-Oriented Software

👋 Sizin Deneyiminiz?

Siz Template Design Pattern’ı nerede kullandınız? En çok hangi senaryolar için kullanışlı buluyorsunuz? Yorumlara yazmayı unutmayın!

Bu serinin diğer yazılarını okumak için: Programlamada Tasarım Desenleri Serisi


📥 E-bültenimize abone olun ve yeni yazılar yayına girdiğinde haberdar olun!

🧠 Yazılımda daha fazlası için blog ana sayfasına dönün »


Etiketler: #TasarımDesenleri #TemplateMethod #CSharp #DesignPatterns #DotNet #OOP #CleanCode


Yazan: [SeninAdın]
Tarih: 2024

You may also like...

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir