Middle
Tətbiqinizdə dizayn şablonlarından istifadə edirsinizmi?
sobes.tech Süni İntellekt
AI-dan cavab
Bəli, istifadə edirəm. Onlar tipik tapşırıqları həll etməyə, kodun strukturunu yaxşılaşdırmağa, onun oxunaqlığını və dəstəklənməsini artırmağa kömək edir.
Əsas tətbiq etdiyim nümunələr:
- Yaradıcılıq nümunələri:
- Singleton: Sinfi tək bir nümunə ilə məhdudlaşdırmaq üçün.
- Factory Method: Konkret sinfi göstərmədən obyektlər yaratmaq üçün.
- Abstract Factory: Əlaqəli obyekt ailələrini yaratmaq üçün.
- Builder: Çətin obyektləri addım-addım yaratmaq üçün.
- Struktural nümunələr:
- Adapter: İnterfeys uyğunluğu üçün.
- Decorator: Bir obyektə dinamik davranış əlavə etmək üçün.
- Facade: Bir alt sistemə vahid interfeys təmin etmək üçün.
- Proxy: Bir obyektə girişə nəzarət etmək üçün.
- Davranış nümunələri:
- Observer: Abunəlik və bildiriş mexanizmini həyata keçirmək üçün.
- Strategy: Alqoritmlər ailəsini təyin etmək və onları dəyişdirilə bilən etmək üçün.
- Template Method: Əsas sinifdə alqoritmin skeletini təyin etmək üçün.
- Command: Sorğunu obyekt kimi inkapsulyasiya etmək üçün.
Məsələn, mən tez-tez Singleton-u verilənlər bazası ilə işləmək üçün istifadə edirəm:
<?php
// Database.php
class Database {
private static ?Database $instance = null;
private ?PDO $pdo = null;
private function __construct() {
// Verilənlər bazası bağlantısı konfiqurasiyası
$dsn = 'mysql:host=localhost;dbname=mydatabase;charset=utf8';
$user = 'myuser';
$password = 'mypassword';
try {
$this->pdo = new PDO($dsn, $user, $password);
$this->pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (\PDOException $e) {
throw new \PDOException($e->getMessage(), (int)$e->getCode());
}
}
public static function getInstance(): self {
if (self::$instance === null) {
self::$instance = new self();
}
return self::$instance;
}
public function getConnection(): ?PDO {
return $this->pdo;
}
private function __clone() {}
public function __wakeup() {}
}
Və giriş məlumatlarına əsasən müxtəlif növ mesajlar və ya obyektlər yaratmaq üçün Factory Method istifadə edə bilərəm:
<?php
// MessageFactory.php
interface Message {
public function send(): string;
}
class EmailMessage implements Message {
public function send(): string {
return "Email göndərilir...";
}
}
class SmsMessage implements Message {
public function send(): string {
return "SMS göndərilir...";
}
}
class MessageFactory {
public function createMessage(string $type): Message {
switch ($type) {
case 'email':
return new EmailMessage();
case 'sms':
return new SmsMessage();
default:
throw new InvalidArgumentException("Naməlum mesaj növü.");
}
}
}
// İstifadə:
// $factory = new MessageFactory();
// $email = $factory->createMessage('email');
// echo $email->send(); // "Email göndərilir..." göstərəcək
Nümunənin seçimi konkret tapşırıq və kontekstdən asılıdır. Əsas odur ki, onları sadəcə istifadə üçün deyil, həqiqətən lazım olduqda başa düşüb istifadə etmək, bu da kodu yaxşılaşdırmağa kömək edir.