18 İçindekiler Lütfen Dikkatle Okuyunuz! Yasal Uyarı Bölüm Başlıkları Önsöz Kitabın İçeriği Nedir? Kitabın İçeriği Ne Degildir? Kitap Kim İçin Yazıldı? Yazar Hakkında Kitap Nasıl Okunmalı? Yazar İle İletişim PratikProgramci.com Kitapta Yer Alan Kod Örnekleri 1. Bölüm Tasarım Şablonları Giriş Tasarım Şablonu Nedir? Tasarım Şablonu Neden Kullanılır? Tasarım Şablonları Nasıl Kullanılmalıdır? Kitapta Yer Alan Tasarım Şablonları Oluşturucu tasarım şablonları Yapısal tasarım şablonları Davranışsal tasarım şablonları Java EE tasarım şablonları Diğer tasarım şablonları 2. Bölüm Nesneye Yönelik Programlama - Object Oriented Programming Interface Nedir? Soyut (Abstract) Sınıf Nedir? Interface Örneği Neden Abstract ve Interface Sınıflar Yeterli Değildir? 3. Bölüm Unified Modeling Language (UML) Giriş Sınıf Diyagramları Dizi (Sequence) Diyagramları Kullanım Senaryo (Usecase) Diyagramları Aktivite (Activity) Diyagramları 4. Bölüm Tasarım Prensipleri Loose Coupling (LC) - Esnek Bağ Open Closed Principle (OCP) - Açık Kapalı Prensibi Stratejik Kapama (Strategic Closure) Single Responsibility Principle (SRP) Tek Sorumluk Prensibi Liskov Substitution Principle (LSP) Liskov Yerine Geçme Prensibi Dependency Inversion Principle (DIP) Bağımlılıkların Tersine Çevrilmesi Prensibi Interface Segregation Principle (ISP) Arayüz Ayırma Prensibi Paket Tasarım Prensipleri (Principles of Package Design) Reuse-Release Equivalence Principle (REP) Tekrar Kullanım ve Sürüm Eşitliği Common Reuse Principle (CRP) Ortak Yeniden Kullanım Prensibi 12 13 16 23 23 28 28 34 34 44 48 49 56 62 62 63 66 68 69 72 72 73 79 83 83 85 90 90 92 92 93
19 Common Closure Principle (CCP) Ortak Kapama Prensibi Acyclic Dependency Principle (ADP) Çevrimsiz Bağımlılık Prensibi Stable Dependencies Principle (SDP) Stabil Bağımlılıklar Prensibi Stable Abstractions Principle (SAP) Stabil Soyutluk Prensibi Soyutluk (A) ve Instability (I) Arasındaki İlişki Iyi Bir Tasarım Kalıtım yerine kompozisyon kullanılmalıdır Statik metot ve tekil yapılar kullanılmamalıdır Bağımlılıkların izole edilmesi gerekir Bağımlılıkların enjekte edilmesi testleri kolaylaştırır 5. Bölüm Oluşturucu Tasarım Şablonları - Creational Patterns Fabrika (Factory) Fabrika tasarım şablonu ne zaman kullanılır? Fabrika Metodu (Factory Method) Fabrika metodu tasarım şablonu ne zaman kullanılır? Soyut Fabrika (Abstract Factory) Soyut fabrika tasarım şablonu ne zaman kullanılır? Tekillik (Singleton Pattern) Tekillik tasarım şablonu ne zaman kullanılır? Yapıcı (Builder) Yapıcı tasarım şablonu ne zaman kullanılır? Prototip (Prototype) Prototip tasarım şablonu ne zaman kullanılır? Nesne Havuzu (Object Pool) Nesne havuzu tasarım şablonu ne zaman kullanılır? 6. Bölüm Yapısal Tasarım Şablonları - Structural Patterns Adaptör (Adapter) Sınıf Adaptörü (Class Adapter) Nesne Adaptörü (Object Adapter) Adaptör tasarım şablonu ne zaman kullanılır? Köprü (Bridge) Köprü tasarım şablonu ne zaman kullanılır? Cephe (Facade) Cephe tasarım şablonu ne zaman kullanılır? Bileşik (Composite) Bileşik tasarım şablonu ne zaman kullanılır? Dekoratör (Decorator) Dekoratör tasarım şablonu ne zaman kullanılır? Vekil (Proxy) Sanal Vekil (Virtual Proxy) Koruyucu Vekil (Protection Proxy) 94 95 97 99 100 102 102 103 104 105 109 109 110 143 144 144 154 154 156 156 157 157 161 175 176 176 187 187 188 192 193 193 194 195
20 Koruyucu Vekil (Protection Proxy) Dinamik Vekil Uzak Vekil Vekil tasarım şablonu ne zaman kullanılır? Sinek Siklet (Flyweight) Sinek siklet tasarım şablonu ne zaman kullanılır? 7. Bölüm Davranışsal Tasarım Şablonları Komut (Command Pattern) Komut tasarım şablonu ne zaman kullanılır? Döngücü (Iterator Pattern) Döngücü tasarım şablonu ne zaman kullanılır? Hatırlayan (Memento Pattern) Memento tasarım şablonu ne zaman kullanılır? Durum (State Pattern) Durum tasarım şablonu ne zaman kullanılır? Gözetleyici (Obverser Pattern) Gözetleyici tasarım şablonu ne zaman kullanılır? Strateji (Strategy Pattern) Strategy tasarım şablonu ne zaman kullanılır? Sorumluluk Zinciri (Chain Of Responsibility Pattern) Chain of Responsibility tasarım şablonu ne zaman kullanılır? Aracı (Mediator Pattern) Mediator tasarım şablonu ne zaman kullanılır? Ziyaretçi (Visitor Pattern) Visitor tasarım şablonu ne zaman kullanılır? Şablon Metodu (Template Method Pattern) Template Method tasarım şablonu ne zaman kullanılır? Yorumlayıcı (Interpreter Pattern) Yorumlayıcı tasarım şablonu ne zaman kullanılır? 8. Bölüm JEE Tasarım Şablonları Java Enterprise Edition (JEE) Platformu MVC Tasarım Tasarım Şablonu Front Controller Tasarım Şablonu Front Controller tasarım şablonu ne zaman kullanılır? DAO (Data Access Objects) Tasarım Şablonu DAO tasarım şablonu ne zaman kullanılır? Servise Yönlendirme Tasarım Şablonu (Business Delegate) Business Delegate tasarım şablonu ne zaman kullanılır? 195 206 218 219 219 220 2 2 228 228 2 243 244 244 0 0 0 8 8 8 276 276 277 7 8 8 1 1 3 3 4 4 5 0 0 0 3 3
21 Servis Lokalizasyonu Tasarım Şablonu (Service Locator) Service Locator tasarım şablonu ne zaman kullanılır? İlişkili tasarım şanlonları Filtreleme Tasarım Şablonu (Intercepting Filter) Intercepting Filter tasarım şablonu ne zaman kullanılır? Business Object Tasarım Şablonu Business Object tasarım şablonu ne zaman kullanılır? 9. Bölüm Daha Fazla Tasarım Şablonu DataMapper Tasarım Şablonu DataMapper tasarım şablonu ne zaman kullanılır? RequestMapper ve ResponseMapper Tasarım Şablonları RequestMapper/ResponseMapper tasarım şablonu ne zaman kullanılır? Active Record Tasarım Şablonu Active Record tasarım şablonu ne zaman kullanılır? Message Channel Tasarım Şablonu Message Channel tasarım şablonu ne zaman kullanılır? Message Router Tasarım Şablonu Message Router tasarım şablonu ne zaman kullanılır? Registry Tasarım Şablonu Registry tasarım şablonu ne zaman kullanılır? Null Object Tasarım Şablonu Null Object tasarım şablonu ne zaman kullanılır? Dependency Injection Tekniği Dependency Injection tekniği ne zaman kullanılır? 10. Bölüm Yazılım Mimarisi ve Tasarım Şablonlarının Pratik Kullanımı 3 Katmanlı Mimari Otel Rezervasyon Programı UML Diagramı Gösterim Katmanı Sınıfları İşletme Katmanı Sınıfları Veri Depolama / Edinme Katmanı UML Dizge (Sequence) Diagramı UML Kullanım Senaryosu (Use Case) Diagramı Gösterim (Presentation) Katmanı İşletme (Business) Katmanı Veri Depolama (Persistence) / Edinme Katmanı Bu Uygulamayı Nasıl Çalışır Hale Getirebilirsiniz Son Söz 3 3 3 3 335 335 336 337 338 340 340 341 347 347 348 367 368 370 370 371 373 375 376 376 377 378 379 380 394 402 409 412
22