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ı")
}
}