Sobes.tech
Junior

Hansı dizayn nümunələrini bilirsiniz?

sobes.tech Süni İntellekt

AI-dan cavab

Yaradıcılıqlar:

  • Singleton: Bir sinfın yalnız bir nümunəsinin olmasını təmin edir və ona qlobal giriş nöqtəsi təqdim edir.
  • Factory Method: Obrazın yaradılması üçün interfeys müəyyən edir, lakin alt siniflərə hansı sinfin instansiya ediləcəyinə qərar verməyə imkan verir.
  • Abstract Factory: Əlaqəli və ya asılı obyektlər ailəsini yaratmaq üçün interfeys təqdim edir, onların konkret siniflərini göstərmədən.
  • Builder: Çətin obyektin qurulmasını mərhələlərə bölür və eyni quruluş prosesindən istifadə edərək müxtəlif təqdimatlarını yaradır.
  • Prototype: Mövcud nümunəni (prototip) təkrarlayaraq obyektlər yaradır, qurma prosesini təkrarlamaq əvəzinə.

Struktural:

  • Adapter: Bir sinfin interfeysini digər interfeysə çevirir, müştərilərin gözlədiyi. Uyğunsuz interfeysli sinflərlə işləməyə imkan verir.
  • Bridge: Abstraksiyanı onun həyata keçirilməsindən ayırır, onların müstəqil dəyişməsinə imkan verir.
  • Composite: Obyektləri ağac strukturlarına birləşdirir, "hissə-bütöv" hierarxiyalarını təmsil edir. Müştərilərə tək obyektlərlə və obyektlərin birləşmələri ilə eynilə işləməyə imkan verir.
  • Decorator: Bir obyekti dinamik olaraq yeni vəzifələr əlavə edir, onu xüsusi dekorator obyektinə sarıyır.
  • Facade: Bir alt sistemin interfeys toplusu üçün vahid interfeys təqdim edir. Yüksək səviyyəli interfeys müəyyən edir ki, bu da alt sistemin istifadəsini sadələşdirir.
  • Flyweight: Kiçik obyektlər arasında paylaşılan vəziyyətdən istifadə edir, yaddaş istifadəsini azaldır və performansı artırır.
  • Proxy: Orijinal obyektə girişə nəzarət edən yerinə keçən obyekt təqdim edir.

Davranış:

  • Chain of Responsibility: Sorğunu emal edən zəncir boyunca ötürür. Hər emalçı sorğunu emal edib etməməyə qərar verir və ya növbəti emalçıya ötürür.
  • Command: Sorğunu obyekt kimi inkapsulyasiya edir, müxtəlif sorğularla müştəriləri parametrizə etməyə, sorğuları növbəyə qoymağa və ya qeyd etməyə imkan verir.
  • Interpreter: Bir dilin qrammatik strukturunu müəyyən edir və bu dildə cümlələri şərh etmək üçün interpretatoru ehtiva edir.
  • Iterator: Birləşdirilmiş obyektin bütün elementlərinə ardıcıl giriş üçün üsul təqdim edir, onun daxili təqdimatını açıqlamadan.
  • Mediator: Digər obyektlər arasındakı qarşılıqlı əlaqəni idarə edən obyektləri müəyyən edir. Zəif əlaqəni təşviq edir, obyektlərin bir-birinə açıq müraciət etmədən qarşılıqlı əlaqə qurmasına imkan verir.
  • Memento: Bir obyektin daxili vəziyyətini yadda saxlamaq və bərpa etmək imkanını təqdim edir, inkapsulyasiyanı pozmadan.
  • Observer: Obyektlər arasında "birə çox" asılılıq müəyyən edir, belə ki, bir obyektin vəziyyəti dəyişdikdə, bütün ona bağlı obyektlər məlumatlandırılır və avtomatik yenilənir.
  • State: Bir obyektin daxili vəziyyətinə görə davranışını dəyişməsinə imkan verir. Hər vəziyyət ayrı sinifdə inkapsulə olunur.
  • Strategy: Alqoritmlər ailəsini müəyyən edir, hər birini inkapsulə edir və dəyişdirilə bilən edir. İcra zamanı alqoritmi seçməyə imkan verir.
  • Template Method: Bir əməliyyatın alqoritminin skeletini müəyyən edir, bəzi addımları alt siniflərə təxirə salır. Alt siniflərin alqoritmin addımlarını müəyyən etməsinə imkan verir, alqoritmin strukturunu dəyişmədən.
  • Visitor: Obyekt strukturu üzərində yerinə yetirilməli olan əməliyyatı təmsil edir. Element siniflərini dəyişdirmədən yeni əməliyyatlar müəyyən etməyə imkan verir.

iOS inkişafında tez-tez rast gəlinən:

  • Model-View-Controller (MVC): Tətbiqi üç əlaqəli komponentə bölən memarlıq nümunəsi: Model (məlumatlar və biznes məntiqi), Görünüş (istifadəçi interfeysi) və Nəzarətçi (Model və Görünüş arasında əlaqə).
  • Delegate: Bir obyektin digər obyektin adından hərəkət etməsinə və ya fəaliyyətlərini koordine etməsinə imkan verən nümunə.
  • Observer (NotificationCenter): Mesajların yayılması sistemi, obyektlərin birbaşa əlaqəsi olmadan mesajlar almağa imkan verir.
  • Target-Action: İdarəetmə elementlərindən (məsələn, düymələrdən) hədəf obyektə mesaj göndərmək üçün istifadə olunan mexanizm.
  • Coordinator: Tətbiqdə naviqasiya axınlarını idarə etmək üçün nümunə, naviqasiya məntiqini nəzarətçilərdən ayırır.
  • Dependency Injection: Bir obyektin asılılıqlarının xaricdən inject edildiyi nümunə, obyektin özündə yaradılmır.
// Nümunə Singleton
class SettingsManager {
    static let shared = SettingsManager() // Yeganə nümunə

    private init() {
        // Xaricdən yaradılmanı qarşısını almaq üçün özəl initializer
    }

    var appVersion: String {
        return Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String ?? "Naməlum"
    }
}

// İstifadə
let settings = SettingsManager.shared
print("Tətbiq versiyası: \(settings.appVersion)")
// Nümunə Delegate (sadə)
protocol ButtonDelegate: AnyObject {
    func buttonWasTapped(_ button: UIButton)
}

class MyButton: UIButton {
    weak var delegate: ButtonDelegate? // Delegate xüsusiyyəti

    override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
        super.touchesEnded(touches, with: event)
        delegate?.buttonWasTapped(self) // delegate metodunu çağır
    }
}

class ViewController: UIViewController, ButtonDelegate {
    override func viewDidLoad() {
        super.viewDidLoad()
        let myButton = MyButton(frame: CGRect(x: 50, y: 50, width: 100, height: 40))
        myButton.setTitle("Tapaq", for: .normal)
        myButton.backgroundColor = .blue
        myButton.delegate = self // delegate təyin et
        view.addSubview(myButton)
    }

    func buttonWasTapped(_ button: UIButton) {
        print("Buton ViewController-də basıldı")
    }
}