JavaScript Module ve Patternler

Yazılım geliştirirken kullandığımız Design Patterns ya da Tasarım Kalıplarının Javascript gibi OOP (Object Oriented Programming) özellikleri güçlü bir dil ile kullanmak, hem yapmış olduğumuz HTML 5 tabanlı mobil uygulamalarda hem de web uygulamalarında çok daha profesyonel, yönetilebilir ve okunabilir bir kod yazmanızı sağlayacaktır.

        //Object Literal
        var myObject = {
             get: function myMethod() {
                 return this.val;
             },
             val: 42
         };

        //Module Pattern => sadece isim uzayı içerisinde fonksiyonlar çalışır.
        myNameSpace = function () {
            var current = null;
            function init() { alert("init"); }
            function change() { alert("change"); }
        }();
        //myNameSpace.init() şeklinde çağırmaya kaltığımızda hata ile karşılaşacağız. Zira bu kullanım ileinit, change ve verify fonksiyonları artık public değil birer private fonksiyon haline geldi. Dolayısı ile myNameSpace kapsamı dışında kullanılamaz.

        myNameSpace = function () {
            var current = null;
            function init() { alert("init"); }
            function change() { alert("change"); }
            function verify() { alert("verify"); }
            init();
        }();
        myNameSpace.init();
        //Peki bu fonksiyonlardan istediklerimizi dışarıdan erişebilir hale getirelim.

        myNameSpace = function () {
            var current = null;
            function init() { alert("init"); }
            function change() { alert("change"); }
            function verify() { alert("verify"); }
            return {
                init: init,
                change: change
            }
        }();
        myNameSpace.init();

        //Böylelikle fonksiyon tanımlarını return’ün dışına taşıyıp, return içerisini yalnızca tanımlardan oluşturarak çok daha kullanışlı ve okunabilir bir kod parçası elde ettik.
        //Kodumuzun return bölümünde tanımlama metni olarak kullandığımız init ve change alanlarına aşağıdaki gibi farklı isimlerde verebiliriz. Bu şekildeki kullanıma da Revealing Module Pattern adını veriyoruz.

        //Revealing Module Pattern
        return {
            basla: init,
            degistir: change
        }
        //Buna göre çağırma şeklimizde aşağıdaki gibi olacaktır.

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Google fotoğrafı

Google hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Connecting to %s