Menu
Coddy logo textTech

Tasarım Kalıplarına Giriş

Coddy'nin Dart Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası — ders 89 / 110.

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, benzer zorlukları tutarlı ve sürdürülebilir bir şekilde çözmek için bu yerleşik şablonları uygulayabilirsiniz.

Tasarım kalıplarını yemek tarifleri gibi düşünün. Bir şefin her seferinde ekmek yapmak için yeni bir yol icat etmemesi gibi, programcılar da onlarca yıl boyunca rafine edilmiş kalıpları kullanırlar. Bu kalıplar, halihazırda öğrendiğiniz OOP kavramlarından — classes, inheritance, interfaces ve polymorphism — yararlanır ve belirli sorunları çözmek için bunları özel şekillerde birleştirir.

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

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

Gelecek derslerde, her kategoriden belirli desenleri öğreneceksiniz. Her desen farklı bir sorunu ele alır: bir sınıfın yalnızca bir örneğinin mevcut olduğundan emin olmak, tam sınıfları belirtmeden nesneler oluşturmak veya nesnelerin değişiklikleri diğerlerine bildirmesine izin vermek. Her bir deseni ne zaman ve neden kullanacağınızı anlamak, onu nasıl uygulayacağınızı bilmek kadar önemlidir.

challenge icon

Görev

Kolay

Tasarım desenlerinin kodu kategoriye göre nasıl organize ettiğini gösteren basit bir problem çözme sistemi oluşturalım! Farklı yazılım zorluklarını sınıflandıran ve bunları çözmeye hangi tür desenin yardımcı olabileceğini öneren bir yapı oluşturacaksınız.

Kodunuzu iki dosya halinde düzenleyeceksiniz:

  • patterns.dart: Üç değere sahip PatternCategory adında bir enum oluşturun: creational, structural ve behavioral. Her birinin amacını açıklayan bir String description alanı olmalıdır:
    • creational: "Handles object creation"
    • structural: "Handles object composition"
    • behavioral: "Handles object communication"
    Ayrıca bir yazılım zorluğunu temsil eden Problem adında bir sınıf oluşturun. Bu sınıfın bir String name alanı ve bir PatternCategory category alanı olmalıdır. Şu formatta bir dize döndüren bir suggest() metodu ekleyin: [name] -> Use a [category description] pattern
  • main.dart: Desenler dosyanızı içe aktarın ve farklı problemlerin farklı desen kategorileriyle nasıl eşleştiğini gösterin. Üç tane Problem örneği oluşturun:
    • Kategorisi creational olan Ensure single database connection isimli bir problem
    • Kategorisi structural olan Make old API work with new system isimli bir problem
    • Kategorisi behavioral olan Notify users when data changes isimli bir problem
    Her problem üzerinde suggest() metodunu çağırın ve sonuçları yazdırın.

Bu meydan okuma, tasarım desenlerinin çözdükleri problem türüne göre nasıl kategorize edildiğini görmenize yardımcı olur - gelecek derslerde belirli desenleri öğrenmeye başladığınızda bu temel bir kavramdır!

Beklenen çıktı:

Ensure single database connection -> Use a Handles object creation pattern
Make old API work with new system -> Use a Handles object composition pattern
Notify users when data changes -> Use a Handles object communication pattern

Kopya kağıdı

Tasarım desenleri, yaygın programlama problemlerine yönelik kanıtlanmış çözümlerdir. Bunlar, OOP kavramlarını (sınıflar, kalıtım, arayüzler, polimorfizm) belirli şekillerde birleştiren şablonlardır.

Tasarım desenleri üç kategoride gruplandırılır:

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

Kendin dene

import 'patterns.dart';

void main() {
  // TODO: Üç Problem örneği oluşturun:
  // 1. name: "Ensure single database connection", category: creational
  // 2. name: "Make old API work with new system", category: structural
  // 3. name: "Notify users when data changes", category: behavioral

  // TODO: Her problem üzerinde suggest() metodunu çağırın ve sonuçları yazdırın
}
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