Module Pattern – Javascript Design Paterns Series

Module Pattern, bir modülün içindeki verilerin ve fonksiyonların dışarıdan erişimini sınırlayyarak kapsülleme sağlar. Bu sayede, yalnızca gerekli olan kısımlar dış dünyaya açılır, geri kalanlar ise gizli (private) kalır. Javascript’te, özellikle büyük uygulamalarda kodun organize edilmesi, okunabilirliği ve bakımının kolaylaştırılması için kullanılır.

Neden ve Nerede Kullanılır?

  • Kapsülleme: Verilerin ve fonksiyonların gizli kalmasını sağlayarak, dışarıdan müdahaleleri önler.
  • İsim Çakışmalarını Önleme: Global değişkenleri azaltarak, isim çakışmalarını engeller.
  • Bakım ve Organizasyon: Kodun daha modüler ve organize olmasını sağlar, böylece bakımını kolaylaştırır.
  • Tekrar Kullanabilirlik: Modüler farklı projeelrde kolayca yeniden kullanılabilirlik.

Kullanımı

Module Pattern, hemen çaprılan fınksiyon ifadeleri (Immediately Invodek Function Expressions – IIFE) kullanılarak oluşturulur.

Örnek Kod:

var myModule = (function() {
  // Private değişkenler ve fonksiyonlar
  var privateVar = "Bu bir private değişkendir.";

  function privateFunction() {
    console.log(privateVar);
  }

  // Public değişkenler ve fonksiyonlar
  return {
    publicVar: "Bu bir public değişkendir.",
    
    publicFunction: function() {
      console.log("Public fonksiyondan private fonksiyone erişilir.");
      privateFunction();
    }
  };
})();

// Kullanım
console.log(myModule.publicVar);
myModule.publicFunction();

// privateVar ve privateFunction dışarıdan erişilemez
console.log(myModule.privateVar); // undefined
myModule.privateFunction(); // TypeError: myModule.privateFunction is not a function

Açıklama

  • ‘myModule’ adında bir modül oluşturduk ve bu modül hemen çağrılan bir fonksiyon (IIFE) olarak tanımlandı.
  • ‘privateVar’ ve ‘privateFunction’ sadece bu fonksiyonun içinde tanımlanmıi ve dışarıdan erişilemez.
  • ‘return’ ifadesi ile döndürülen nesne, modülün dış dünyaya açmak istediği ‘publicVar’ ve ‘publicFunction’ gibi elemanları içeriri.
  • ‘myModule.publicFuncyion()’ çağrıldığında, modül içindeki ‘privateFunction”a erişileiblir, ancak doğrudan ‘privateFunction”a erişim yoktur.
  • Module Pattern’ın çalışma mantığı bu şekildedir. Kapsülleme ile daha güvenli ve organize bir yapı oluşturabilmektedir.

Bir yanıt yazın

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