Mert Özen Her Satırda Daha İleri

Blog

Mert Özen'in yazılım geliştirme, backend, frontend ve DevOps üzerine blog yazıları.

Seriler
5 yazı bulundu #dependency-injection
Singleton Pattern: Thread-Safe Lazy<T>, Static Field ve Neden DI Singleton Lifetime Daha İyi
Yazılım Tasarımı SERİ 02

Singleton Pattern: Thread-Safe Lazy<T>, Static Field ve Neden DI Singleton Lifetime Daha İyi

Tek instance gerekiyorsa en temiz yol klasik Singleton değil, DI container'da AddSingleton ile kaydetmektir: tek instance garantisi aynı kalır, global erişim ve gizli bağımlılık ortadan kalkar. Naif Singleton'daki race, double-checked locking'in tarihi, static readonly ve beforefieldinit, Lazy<T>'nin exception caching'i, captive dependency ve singleton içindeki paylaşılan state gerçek çıktılarla.

7 Kas 2026 14 dk 6
Factory Method ve Static Factory: Oluşturmayı Alt Class'a ya da Tek Bir Method'a Bırakmak
Yazılım Tasarımı SERİ 03

Factory Method ve Static Factory: Oluşturmayı Alt Class'a ya da Tek Bir Method'a Bırakmak

GoF Factory Method hangi ürünün oluşturulacağını alt class'a bırakır; static factory method ise constructor'ın yerine geçen, adı olan, cache'leyebilen ve gizli alt tip döndürebilen tek bir method'dur. Constructor'dan çağrılan factory method hatası ve CA2214, DbConnection.CreateDbCommand, ILoggerFactory ve IHttpClientFactory, DI'da Func<T>, ActivatorUtilities, keyed services ve IDisposable ürünlerin sahipliği gerçek çıktılarla.

7 Kas 2026 16 dk 5
Decorator Pattern: Caching, Logging ve Retry'ı Koda Dokunmadan Eklemek
Yazılım Tasarımı SERİ 10

Decorator Pattern: Caching, Logging ve Retry'ı Koda Dokunmadan Eklemek

Decorator, aynı interface'i implement edip içindeki object'e iş devrederek ona runtime'da davranış ekler; decorator'ların sırası ne ölçtüğünü ve neyi koruduğunu belirleyen bir tasarım kararıdır. Bookstore kataloğuna cache, log ve retry eklemek, Stream ailesi ve leaveOpen ile sahiplik, DI'da elle registration ve Scrutor Decorate, DelegatingHandler ve default interface method'ların decorator'ı sessizce atlatması.

7 Kas 2026 13 dk 7
Facade Pattern: Karmaşık Alt Sistemi Tek Kapıdan Sunmak
Yazılım Tasarımı SERİ 11

Facade Pattern: Karmaşık Alt Sistemi Tek Kapıdan Sunmak

Facade, birden fazla subsystem'i doğru sırayla ve doğru compensation adımlarıyla kullanma bilgisini tek bir class'a toplar; subsystem'i kapatmadan client'a kolay bir giriş noktası verir. Bookstore'da stok, ödeme, fatura ve bildirimi koordine eden bir CheckoutFacade, File.ReadAllTextAsync ve GetFromJsonAsync'in arkasındaki gerçek kod, Facade'ın Service Layer, Adapter ve Mediator'dan farkı ve god facade tuzağı.

7 Kas 2026 13 dk 5
Strategy Pattern Derinlemesine: Keyed Services, IEnumerable<IStrategy> ve Func ile Runtime Seçim
Yazılım Tasarımı SERİ 21

Strategy Pattern Derinlemesine: Keyed Services, IEnumerable<IStrategy> ve Func ile Runtime Seçim

Strategy'yi yazmak kolay, zor olan doğru strategy'yi runtime'da seçmek: keyed services tek bir key'le, IEnumerable<IStrategy> ve CanHandle object'in birden fazla özelliğine bakarak, Dictionary<string, Func<>> ise bağımlılığı olmayan formüllerde en az törenle seçer. Kayıt sırasının sessizce fiyat değiştirmesi, keyed kayıtların GetServices'te görünmemesi ve BCL'deki IComparer ile StringComparer örnekleri.

7 Kas 2026 12 dk 4
Blog Haritası