Middle+
Kodun icra tezliyini optimallaşdırmaq üçün istifadə olunan dizayn nümunələrindən danışın.
sobes.tech Süni İntellekt
AI-dan cavab
Kodun icra tezliyini optimallaşdırmaq üçün tez-tez aşağıdakı dizayn nümunələri istifadə olunur: overhead-ları azaltmaq, təkrarlanan hesablamalardan qaçınmaq və resursları effektiv idarə etmək.
Əsas nümunələr:
-
Singleton
- Yalnız bir nümunənin yaradılmasını təmin edir. Ümumi resurslara, məsələn, verilənlər bazası bağlantıları və ya keşiklərə giriş üçün faydalıdır və çoxsaylı yaradılmasının qarşısını alır.
<?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; } } -
Registry
- Ümumi obyektlər və xidmətlər üçün mərkəzləşdirilmiş anbar. Əvvəl yaradılmış və ya konfiqurasiya olunmuş resurslara yenidən başvurmadan giriş imkanı verir.
<?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]); } } -
Flyweight
- Kiçik obyektlərin çoxsaylı istifadəsi üçün effektiv idarəetmə, onların vəziyyətini bölüşdürməklə yaddaş və vaxt qənaət edir. Məsələn, eyni simvollar və ya rənglər üçün ümumi obyektlərin istifadəsi.
-
Proxy
- Digər obyekt üçün əvəz və ya "vəkil" təmin edir. Gecikdirilmiş yükləmə (Lazy Loading) və ya əməliyyatların nəticələrinin keşikləşdirilməsi üçün istifadə edilə bilər.
-
Cache (və ya Memoization - tam nümunə deyil, texnikadır)
- Bahalı funksiyaların və ya sorğuların nəticələrini yadda saxlayır, eyni arqumentlərlə yenidən çağırıldıqda saxlanılan nəticəni geri qaytarır. Digər nümunələr və ya komponentlər çərçivəsində həyata keçirilə bilər.
<?php function expensiveFunction($arg) { static $cache = []; // Sadə keşik if (isset($cache[$arg])) { echo "Keşdən istifadə edirəm $arg\n"; return $cache[$arg]; } echo "Hesablama $arg üçün\n"; // Bahalı əməliyyatın imitasyonu sleep(1); $result = $arg * 2; $cache[$arg] = $result; return $result; } expensiveFunction(10); // Hesablanır və keşikdə saxlanılır expensiveFunction(10); // Keşikdən istifadə olunur -
Object Pool
- İstifadəyə hazır obyektlərin hovuzunu saxlayır və yenidən istifadə üçün təmin edir. Məsələn, bahalı obyektlərin, məsələn, verilənlər bazası bağlantılarının yaradılması.
-
Lazy Loading
- Tez-tez Factory, Proxy və ya digər nümunələrlə həyata keçirilən prinsip. Obyekt və ya resurs yalnız lazım olduqda yüklənir, bu da başlanğıc yükü azaldır.
Hər bir nümunə əməliyyatların təkrarlanmasının qarşısını almağa, resurslardan səmərəli istifadə etməyə və nəticədə kodun icra tezliyini və performansını optimallaşdırmağa kömək edir. Nümunənin seçimi konkret tapşırıq və kontekstdən asılıdır.