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 desenleri, yazılım geliştirirken geliştiricilerin 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 bu zamanla test edilmiş şablonları uygulayabilirsiniz.

Tasarım desenlerini birer taslak gibi düşünün. Size kopyalayıp yapıştırabileceğiniz hazır kodlar sunmazlar, ancak belirli bir problem türünü çözmek için sınıflarınızı ve nesnelerinizi nasıl yapılandıracağınızı tarif ederler. Öğreneceğiniz desenler; kalıtım, arayüzler, çok biçimlilik ve kompozisyon gibi halihazırda uzmanlaştığınız OOP kavramlarından yararlanır.

Tasarım desenleri üç ana kategoriye ayrılır:

KategoriAmaçÖrnekler
YaratımsalNesnelerin nasıl oluşturulduğuSingleton, Factory, Builder
YapısalNesnelerin nasıl birleştirildiğiAdapter, Decorator, Composite
DavranışsalNesnelerin nasıl iletişim kurduğuObserver, Strategy, Command

Neden tasarım desenlerini öğrenmelisiniz? Diğer geliştiricilerle ortak bir kelime dağarcığına sahip olmanızı sağlarlar; "burada bir Factory kullan" demek, karmaşık bir fikri anında iletir. Ayrıca, "bir uygulamaya değil, bir arayüze göre programla" gibi ilkeleri uygulayarak daha esnek ve bakımı kolay kodlar yazmanıza yardımcı olurlar.

Gelecek derslerde, Singleton ve Factory gibi oluşturucu (creational) desenlerle başlayıp, ardından Observer ve Strategy gibi davranışsal (behavioral) desenlere geçerek birkaç temel deseni uygulayacaksınız.

challenge icon

Görev

Kolay

Üç tasarım deseni kategorisi hakkındaki anlayışınızı gösteren basit bir desen sınıflandırıcı oluşturalım! Desenleri kategorize eden ve amaçlarını açıklayan bir sistem oluşturacak, kodunuzu birden fazla dosya halinde düzenleyeceksiniz.

Üç dosya oluşturacaksınız:

  • Pattern.java: Tüm tasarım desenleri için sözleşmeyi tanımlayan Pattern adında bir arayüz (interface) oluşturun. Arayüzünüz iki metot bildirmelidir: desenin kategorisini (Creational, Structural veya Behavioral) döndüren String getCategory() ve bu desen kategorisinin ne yaptığının açıklamasını döndüren String getPurpose().
  • PatternInfo.java: Pattern arayüzünüzü uygulayan (implement) ve her biri bir tasarım deseni kategorisini temsil eden üç sınıf oluşturun:

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

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

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

  • Main.java: Desen sınıflandırıcınızı bir araya getirin! Bir girdi alacaksınız: "Singleton", "Factory", "Adapter", "Decorator", "Observer" veya "Strategy" değerlerinden biri olan bir desen adı (String).

    Girdiye bağlı olarak 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) tipinde bir değişkende saklayarak bir arayüze göre programlama ilkesini gösterin. Ardından şu üç satırı yazdırın:

    Pattern: [input pattern name]

    Category: [category from getCategory()]

    Purpose: [purpose from getPurpose()]

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

Bu meydan okuma, dersteki temel bilgiyi pekiştirir: tasarım desenleri, hangi sorunu çözdüklerine bağlı olarak kategorilere ayrılır. Bir arayüz kullanarak, aynı zamanda tasarım desenlerini bu kadar güçlü kılan temel bir kavram olan "bir uygulamaya değil, bir arayüze göre programlama" ilkesini de uygulamış oluyorsunuz!

Kopya kağıdı

Tasarım desenleri, yazılım geliştirmedeki yaygın sorunlara yönelik kanıtlanmış çözümlerdir. Belirli türdeki sorunları çözmek için sınıfların ve nesnelerin nasıl yapılandırılacağını açıklayan taslaklardır.

Tasarım desenleri üç ana kategoriye ayrılır:

KategoriAmaçÖrnekler
Yaratımsal (Creational)Nesnelerin nasıl oluşturulduğuSingleton, Factory, Builder
Yapısal (Structural)Nesnelerin nasıl birleştirildiğiAdapter, Decorator, Composite
Davranışsal (Behavioral)Nesnelerin nasıl iletişim kurduğuObserver, Strategy, Command

Tasarım desenleri, geliştiriciler arasında ortak bir kelime dağarcığı sağlar ve "bir uygulamaya değil, bir arayüze göre programla" gibi ilkeleri uygulayarak daha esnek, bakımı kolay kodlar yazmaya yardımcı olur.

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 (arayüz) bir değişken bildirin
        Pattern pattern = null;
        
        // TODO: patternName'e göre uygun desen nesnesini oluşturun:
        // - "Singleton" ve "Factory" Creational (Yaratımsal) desenlerdir
        // - "Adapter" ve "Decorator" Structural (Yapısal) desenlerdir
        // - "Observer" ve "Strategy" Behavioral (Davranışsal) desenlerdir
        
        // TODO: Çıktıyı aşağıdaki formatta yazdırın:
        // Pattern: [giriş desen adı]
        // Category: [getCategory() metodundan gelen kategori]
        // Purpose: [getPurpose() metodundan gelen 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