• Recent Comments

    ABAP Singleton Pattern

    Singleton pattern mantığında amacımız  ; programımızın çalışma anında , ilgili nesnemize erişen sadece  tek bir instance ın var olmasını sağlamaktır.

    Biraz daha detaylandıracak olursak;

    Elimizde bir kontrol sınıfı var ve biz bunun ABAP tarafında her perform altında ve fonksiyon çağrıldığında yeniden instance oluşmasını istemiyorsak  bu yöntemi uygulayabiliriz. Böylece  aynı instance ı tüm runtime anında kullanabiliriz.

    Diğer object – oriented dillerinde genel olarak kullanımı veri tabanı erişimlerinde bir kere set ederek , tüm çalışma zamanında aynı instance üzerinden verilere erişmektir.

    ABAP tarafında kullanımlarda şahsi olarak benim tercihim kontrol  amaçlı  nesnelerde , entegrasyonlarda aynı noktadan çıkmak. Örnek olarak ; web servis kullanımları.

    ABAP gücünden dolayı programımız çağrılırken , global instance oluşturur , program init olurken set edebilirim diyebilirsiniz . Bu instance ı çağırdığınız fonksiyonda kullanmak istediğinizde ,static class gerek olduğunu farketmiş olacaksınız. Böylece runtime sürecinde singleton ile oluşturduğunuz instance , ordan oraya ek parametreler ile taşımak zorunda kalmayacaksınız.

    Aşağıdaki örnekte static-private olarak bir değer oluşturdum , buna programın içinde bir değer vererek , çağırdığım fonksiyondan değeri almaya çalıştım , static class aynı veri yapısı ile ordan bana aynı değeri döndürmüş oldu.

    picture123 ABAP Design Pattern

    Bu örnek üzerinden yola çıkarak , bir değişken değil de bir nesne erişimi olursa bu “singleton” şablonunu kullanmış oluruz.

    Dezavantajları ;

    Birden çok instance ihtiyaç olduğunda sorun yaşayabilirsiniz , örnek olarak araç sınıfınız bulunmakta ve bunu bir internal tablo ile yönetmek istiyorsunuz ,böyle bir durumda “SALV “ deki gibi factory method kullanmanızı önerebilirim , böylece “instance” oluşmadan veri kontrolü yapabilirsiniz.

    Singleton yaptığınız “instance” da kalıtım kullanırken sıkıntılar yaşayabilirsiniz.

     

    Örnek Kodlar,

    https://bitbucket.org/suleymancelik/designpattern/src

     

    • Recent Comments