Blog

“Open/Closed Principle” (OCP) Kullanımı

Bu yazımızda, Robert C. Martin tarafından tanıtılan SOLID ilkeleri arasında ikinci sırada yer alan “Open/Closed Principle” kavramına odaklanacağız.

“Open/Closed Principle” Ne Anlatır?

Türkçeye “Açık/Kapalı Prensibi” şeklinde çevirebileceğimiz “Open/Closed Principle” ile bir yazılım modülünün (sınıf, fonksiyon, modül vb.) genişlemeye açık ama değişime kapalı olması gerektiği ifade edilir.

Başka bir deyişle, mevcut kodun değiştirilmesi gerekmeden yeni özelliklerin eklenmesine imkan tanınmalıdır. Böylece kodumuz kırılgan olmayacak ve mevcut özelliklerle alakalı çakışmalar minimalize edilerek genişletilecektir.

İşte tam da bu noktada “bu prensibi kodlarımıza nasıl uygulayabiliriz?” sorusunu sormamızın vakti geldiğine göre maddeler halinde buna cevap verelim:

  1. Soyutlama ve Arayüzler Kullanımı: Farklı bölümler arasındaki bağımlılıkları azaltmak ve genişletilebilirlik sağlamak için soyut sınıflar veya arayüzler kullanılabilir.
  2. Polimorfizm: Ortak bir arayüzü veya soyut sınıfı genişleten çeşitli sınıflar yoluyla farklı davranışların uygulanması sağlanabilir.

Öncelikle, mevcut işlevselliklerimizi genişletmek yerine yeni işlevsellikler ekleyebileceğimiz bir yapı kurmamız gerekir. Örnek üzerinden anlatırsak ziyadesiyle anlaşılacağını düşünüyorum.

Örneğin, bir ödeme sistemini ele alalım. Farklı ödeme yöntemleri için ayrı sınıflar oluşturmak yerine, bir ödeme işlemi arayüzü tanımlayabilir ve her ödeme yöntemini bu arayüzü uygulayacak şekilde ayrı sınıflar olarak tasarlayabiliriz. Yeni bir ödeme yöntemi eklendiğinde, sadece yeni bir sınıf eklememiz ve bu arayüzü uygulamamız yeterli olacaktır.

Şimdi, aynı işlevselliği “Açık/Kapalı Prensibine” uygun bir şekilde nasıl geliştirebileceğimizi inceleyelim. Bakınız:

Görüldüğü üzere, “Açık/Kapalı Prensibi”, kodumuzu genişletirken mevcut yapıyı korumamızı kolaylaştırmaktadır.

İlgili Makaleler

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu

😔 Reklam Engelleyicisi 😔

Sitenin varlığını sürdürebilmesi adına reklam engelleyicinizi (Adblocker) kapatmanızı rica ediyoruz 😔