Prototype Pattern – Javascript Design Paterns Series

Prototype Pattern (Prototip Deseni), bir nesnenin mevcut bir örneği kullanılarak yeni nesneler oluşturmaya sağlar. Bu desen, yeni nesneler oluşturmanın maliyeti olduğu durumlarda, bir nesnenin kopyasını alarak yeni nesneler üretir. JavaScript, prototip tabanlı bir dil olduğu için, bu deseni uygulamak oldukça doğaldır ve dilin kendisi tarafından desteklenir.

Neden ve Nerede Kullanılır

  • Performans: Yeni nesneler oluşturmanın maliyeti olduğu durumlarda, bir nesnenin klonlanması performans avantajı sağlar.
  • Dinamik Nesne Oluşturma: Farklı yapılandırmalara sahip nesneleri dinamik olarak oluşturmak için kullanılır.
  • Bellek Verimliliği: Aynı özelliklere sahip birden fazla nesne oluşturmak yerine, bir prototipi klonlamak bellek verimliliği sağlar.
  • Esneklik ve Uzatılabilirlik: Prototipler sayesinde, nesnelerin davranışlarını ve özelliklerini dinamik olarak değiştirebiliriz.

Örnek Kod

// Prototip nesnesi
const vehiclePrototype = {
  init: function(make, model) {
    this.make = make;
    this.model = model;
  },
  getDetails: function() {
    return `${this.make} ${this.model}`;
  }
};

// Nesne oluşturma
function createVehicle(make, model) {
  const vehicle = Object.create(vehiclePrototype);
  vehicle.init(make, model);
  return vehicle;
}

// Kullanım
const car1 = createVehicle("Toyota", "Corolla");
console.log(car1.getDetails()); // "Toyota Corolla"

const car2 = createVehicle("Honda", "Civic");
console.log(car2.getDetails()); // "Honda Civic"

Açıklama

  • ‘vehiclePrototype’ adında bir prototip nesnesi oluşturduk. Bu nesne, tüm araçların ortak özelliklerini ve yöntemlerini içerir.
  • ‘createVehicle’ fonksiyonu, ‘Object.create’ yöntemini kullanarak ‘vehiclePrototype’ prototipinden yeni bir nesne oluşturur. Ardından ‘init’ yöntemi ile nesnenin özellikleri ayarlanır.
  • ‘car1’ ve ‘car2’ nesneleri, ‘createVehicle’ fonksiyonu kullanılarak oluşturulur ve ‘vehiclePrototype’ prototipini kullanarak davranışlarını ve özelliklerini miras alır.

Özetle

Prototype Pattern, mevcut bir nesnenin klonlanarak yeni nesneler oluşturulmasını sağlar. Bu desen, performans avantajları sunar ve bellek verimliliği sağlar. Ayrıca, esnek ve dinamik nesne oluşturma imkanı tanır. Javascript’in doğal prototip tabanlı yapısı sayesinde, bu desen dilin kendisiyle uyumlu bir şekilde kolayca uygulanabilir. Özellikle, yeni nesneler oluşturmanın maliyetli olduğu ve dinamik yapılandırmaların gerektiği durumlarda kullanışlıdır.

Bir yanıt yazın

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