Menu
Coddy logo textTech

Tasarım Kalıplarına Giriş

Coddy'nin Java Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 64 / 87.

Tasarım kalıpları, geliştiricilerin yazılım oluştururken tekrar tekrar karşılaştığı yaygın sorunlara yönelik kanıtlanmış çözümlerdir. Her seferinde tekerleği yeniden icat etmek yerine, yinelenen tasarım zorluklarını çözmek için zaman içinde kendini kanıtlamış bu şablonları uygulayabilirsin.

Tasarım kalıplarını şablonlar olarak düşünün. Kopyalayıp yapıştırmanız için hazır kod vermezler; ancak belirli bir problem türünü çözmek için sınıflarınızı ve nesnelerinizi nasıl yapılandıracağınızı açıklarlar. Öğreneceğiniz kalıplar, daha önce ustalaştığınız OOP kavramlarından yararlanır: kalıtım, arayüzler, çok biçimlilik ve bileşim.

Tasarım kalıpları üç ana kategoriye ayrılır:

KategoriAmaçÖrnekler
CreationalNesnelerin nasıl oluşturulduğuSingleton, Factory, Builder
StructuralNesnelerin nasıl birleştirildiğiAdapter, Decorator, Composite
BehavioralNesnelerin nasıl iletişim kurduğuObserver, Strategy, Command

Tasarım kalıplarını neden öğrenmelisiniz? Diğer geliştiricilerle ortak bir söz dağarcığı sağlarlar: “Burada bir Factory kullanın” demek, karmaşık bir fikri anında iletir. Ayrıca “bir uygulamaya değil, bir arayüze göre programlayın” gibi ilkeleri uygulayarak daha esnek ve bakımı kolay kod yazmanıza yardımcı olurlar.

Gelecek derslerde, Singleton ve Factory gibi oluşturucu kalıplarla başlayarak, ardından Observer ve Strategy gibi davranışsal kalıplara geçip çeşitli temel kalıpları uygulayacaksın.

challenge icon

Görev

Kolay

Üç tasarım deseni kategorisini anladığınızı gösteren basit bir desen sınıflandırıcısı oluşturalım! Desenleri kategorilere ayıran ve amaçlarını açıklayan bir sistem oluşturacak, kodunuzu birden fazla dosyada düzenleyeceksiniz.

Üç dosya oluşturacaksınız:

  • Pattern.java: Tüm tasarım desenleri için sözleşmeyi tanımlayan Pattern adlı bir arayüz oluşturun. Arayüzünüz iki metot bildirmelidir: desenin kategorisini (Creational, Structural veya Behavioral) döndüren String getCategory() ve o kategorideki desenlerin ne yaptığını açıklayan bir açıklama döndüren String getPurpose().
  • PatternInfo.java: Pattern arayüzünüzü uygulayan ve tasarım deseni kategorilerinden birini temsil eden üç sınıf oluşturun:

    CreationalPattern kategori için "Creational", amaç için "How objects are created" döndürmelidir.

    StructuralPattern kategori için "Structural", amaç için "How objects are composed" döndürmelidir.

    BehavioralPattern kategori için "Behavioral", amaç için "How objects communicate" döndürmelidir.

  • Main.java: Desen sınıflandırıcınızı bir araya getirin! Şunlardan biri olacak bir desen adı (String) biçiminde tek bir girdi alacaksınız: "Singleton", "Factory", "Adapter", "Decorator", "Observer" veya "Strategy".

    Girdiye göre uygun desen nesnesini oluşturun:

    • "Singleton" ve "Factory", Creational desenlerdir
    • "Adapter" ve "Decorator", Structural desenlerdir
    • "Observer" ve "Strategy", Behavioral desenlerdir

    Desen nesnenizi Pattern (arayüz) türündeki bir değişkende saklayarak arayüze yönelik programlama ilkesini gösterin. Ardından aşağıdaki üç satırı yazdırın:

    Pattern: [input pattern name]

    Category: [category from getCategory()]

    Purpose: [purpose from getPurpose()]

Tek bir girdi alacaksınız: bir tasarım deseninin adı (String).

Bu görev, dersteki temel kavrayışı pekiştirir: tasarım desenleri, çözdükleri probleme göre kategoriler halinde düzenlenir. Bir arayüz kullanarak, tasarım desenlerini bu kadar güçlü kılan temel bir kavram olan "uygulamaya değil, arayüze yönelik programlama" ilkesini de uygulamış olursunuz!

Kendin dene

import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String patternName = scanner.nextLine();
        
        // TODO: Pattern türünde bir değişken bildir (arayüz)
        Pattern pattern = null;
        
        // TODO: patternName'e göre uygun pattern nesnesini oluştur:
        // - "Singleton" ve "Factory" Yaratımsal desenlerdir
        // - "Adapter" ve "Decorator" Yapısal desenlerdir
        // - "Observer" ve "Strategy" Davranışsal desenlerdir
        
        // TODO: Çıktıyı aşağıdaki formatta yazdır:
        // Pattern: [giriş pattern adı]
        // Category: [getCategory()'den kategori]
        // Purpose: [getPurpose()'den amaç]
    }
}
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Nesne Yönelimli Programlama bölümündeki tüm dersler

Kendi başına pratik yap: Online Java derleyicisi