Sobes.tech
Middle+

Kodun çalışma sıklığını optimize etmek için kullanılan tasarım desenlerinden bahsedin.

sobes.tech yapay zeka

AI'dan gelen yanıt

Kodun çalışma sıklığını optimize etmek için, genellikle genel giderleri azaltmaya, tekrar hesaplamalardan kaçınmaya ve kaynakları verimli yönetmeye yönelik tasarım desenleri kullanılır.

Ana desenler:

  1. Singleton

    • Bir sınıfın yalnızca bir örneğinin oluşturulmasını sağlar. Veritabanı bağlantıları veya önbellek gibi ortak kaynaklara erişim için faydalıdır ve çoklu oluşturmayı önler.
    <?php
    class Singleton {
        private static $instance = null;
        private function __construct() { /* ... */ }
        private function __clone() { /* ... */ }
        private function __wakeup() { /* ... */ }
    
        public static function getInstance(): self {
            if (self::$instance === null) {
                self::$instance = new self();
            }
            return self::$instance;
        }
    }
    
  2. Registry

    • Ortak nesneler ve servisler için merkezi depolama. Daha önce oluşturulmuş veya yapılandırılmış kaynaklara tekrar başvurmadan erişim sağlar.
    <?php
    class Registry {
        private static $data = [];
    
        public static function set(string $key, $value): void {
            self::$data[$key] = $value;
        }
    
        public static function get(string $key) {
            return self::$data[$key] ?? null;
        }
    
        public static function has(string $key): bool {
            return isset(self::$data[$key]);
        }
    }
    
  3. Flyweight

    • Çok sayıda küçük nesneyi, benzer davranışlara sahip olanları paylaşarak verimli bir şekilde yönetmek için kullanılır. Bellek ve zaman tasarrufu sağlar. Örneğin, ortak karakterler, renkler vb. için ortak nesnelerin kullanılması.
  4. Proxy

    • Bir nesnenin yerine geçen veya "temsilci" görevi gören nesne sağlar. Lazy Loading (tembel yükleme) veya sonuçların önbelleğe alınması gibi durumlarda kullanılabilir.
  5. Cache (veya Memoization - tam anlamıyla bir desen değil, daha çok bir teknik)

    • Maliyetli fonksiyonların veya sorguların sonuçlarını saklar, böylece tekrar çağrıldığında hesaplama yapmadan saklanan sonucu döndürür. Diğer desenler içinde veya bağımsız bir bileşen olarak uygulanabilir.
    <?php
    function expensiveFunction($arg) {
        static $cache = []; // Basit önbellek uygulaması
    
        if (isset($cache[$arg])) {
            echo "Önbelleği kullanılıyor for $arg\n";
            return $cache[$arg];
        }
    
        echo "Hesaplama yapılıyor for $arg\n";
        // Pahalı bir işlemin simülasyonu
        sleep(1);
        $result = $arg * 2;
        $cache[$arg] = $result;
    
        return $result;
    }
    
    expensiveFunction(10); // Hesaplanır ve önbelleğe alınır
    expensiveFunction(10); // Önbellek kullanılır
    
  6. Object Pool

    • Kullanıma hazır nesnelerin havuzunu tutar ve yeni nesne oluşturmadan tekrar kullanılabilir. Özellikle maliyetli nesneler, örneğin veritabanı bağlantıları için faydalıdır.
  7. Lazy Loading

    • Ayrı bir prensiptir ve genellikle Factory, Proxy veya diğer desenlerle uygulanır. Nesne veya kaynak yalnızca gerçekten ihtiyaç duyulduğunda yüklenir, böylece başlangıç yükü azaltılır.

Her biri, gereksiz işlemleri azaltmaya, kaynakları verimli kullanmaya ve sonuç olarak kodun çalışma sıklığını ve hızını optimize etmeye yardımcı olur. Desen seçimi, belirli göreve ve bağlama bağlıdır.