Sobes.tech
Junior

Кайсы дизайн үлгүлөрүн билесиз?

sobes.tech AI

AIден жооп

Түзүүчү:

  • Singleton: Класс үчүн бир гана экземпляр бар экенине кепилдик берет жана ага глобалдуу жетүүчү пунктту камсыз кылат.
  • Factory Method: Объект түзүү үчүн интерфейсти аныктайт, бирок подклассларга кайсы классты түзүү керектигин чечүүгө мүмкүнчүлүк берет.
  • Abstract Factory: Байланышкан же көз каранды объекттердин үй-бүлөлөрүн түзүү үчүн интерфейсти камсыз кылат, алардын конкреттүү класстары көрсөтүлбөйт.
  • Builder: Кыйын объектти куруу процесстерине бөлүнөт, бир эле куруу процесси аркылуу ар кандай көрсөтүүлөрдү түзүүгө мүмкүндүк берет.
  • Prototype: Бар объектти дублдоо аркылуу объекттерди түзөт, кайра куруу процесси менен алмаштыруу эмес.

Структуралык:

  • Adapter: Бир класстын интерфейсин башка интерфейске өзгөртөт, кардарлар күтүп жаткандай. Бирикпеген интерфейстер менен иштөөгө мүмкүндүк берет.
  • Bridge: Абрстракцияны анын ишке ашырылышынан бөлөт, алардын өзгөрүшүн көз карандысыз кылат.
  • Composite: Объекттерди дарак структураларында топтоп, "бөлүк-бардык" иерархияларын көрсөтөт. Кардарларга жеке объекттер менен топтомдорду бирдей иштетүүгө мүмкүндүк берет.
  • Decorator: Объектке динамикалык түрдө жаңы милдеттер кошот, аны атайын декоратор объект менен каптайт.
  • Facade: Подсистеманын интерфейстеринин топтомуна бириккен интерфейс камсыз кылат. Жогорку деңгээлдеги интерфейс аны колдонууда жеңилдик түзөт.
  • Flyweight: Көптөгөн кичинекей объекттер ортосунда бөлүшүлгөн абалын колдонуп, эс тутумду азайтат жана иштөө ылдамдыгын жогорулатат.
  • Proxy: Оргиналдуу объектке кирүүнү башкарган ортомчу объектти камсыз кылат.

Пайдалануучу:

  • Chain of Responsibility: Суранычты иштетүүчү чынжырга өткөрөт. Ар бир иштетүүчү суранычты иштетүү же кийинкиге өткөрүү чечимин кабыл алат.
  • Command: Суранычты объект катары инкапсуляциялайт, ар кандай кардарлар үчүн параметрлештирүүгө, кезекке коюуга же журналда сактоого мүмкүндүк берет.
  • Interpreter: Тилдин грамматикалык көрсөтмөсүн аныктайт жана ушул тилде сүйлөмдөрдү түшүндүрүү үчүн интерпретаторду камтыйт.
  • Iterator: Түзүмдөгү бардык элементтерге кезектешип жетүүнүн жолун камсыз кылат, анын ички көрсөтмөсүн ачыкка чыгарбай.
  • Mediator: Башка объекттердин өз ара аракеттенүүсүн башкарган объекттерди аныктайт. Ал объекттердин ортосундагы байланышты төмөндөтөт, алардын бири-бирине түз кайрылбастан иштешине мүмкүндүк берет.
  • Memento: Объекттин ички абалын сактоо жана калыбына келтирүү мүмкүнчүлүгүн камсыз кылат, инкапсуляцияны бузбастан.
  • Observer: Объекттердин ортосунда "бирден көп" көзкаранды болууну аныктайт, бир объекттин абалы өзгөргөндө, анын бардык көзкаранды объекттери кабардар болуп, автоматтык түрдө жаңыртылат.
  • State: Объекттин ички абалына жараша анын жүрүм-турумун өзгөртүүгө мүмкүндүк берет. Ар бир абал өзүнчө класс катары инкапсуляцияланат.
  • Strategy: Алгоритмдердин үй-бүлөсүн аныктайт, ар бирин инкапсуляциялайт жана алмаштырылуучу кылат. Аткаруу учурунда алгоритмди тандоого мүмкүндүк берет.
  • Template Method: Алгоритмдин каркасын аныктайт, айрым кадамдарды подкласс үчүн калтырып коюу менен. Алгоритмдин түзүмүн өзгөртпөстөн, кадамдарын аныктоого мүмкүндүк берет.
  • Visitor: Объекттердин структурасынын элементтери үстүндө аткарылуучу операцияны көрсөтөт. Ал элементтердин класстарын өзгөртпөстөн жаңы операцияларды аныктоого мүмкүндүк берет.

iOS иштеп чыгууда да кеңири колдонулат:

  • Model-View-Controller (MVC): Архитектуралык үлгү, колдонмону үч байланышкан компонентке бөлөт: Модель (маалымат жана бизнес логика), Көрсөтүү (колдонуучу интерфейси) жана Контроллер (Модель менен Көрсөтүүнүн ортосундагы байланыш).
  • Delegate: Бир объектке башка бирөөнүн атынан иш жүргүзүүгө же аракеттерин жөнгө салууга мүмкүндүк берет.
  • Observer (NotificationCenter): Белгиленген билдирүүлөрдү таратуу системасы, объекттерге түз байланышсыз билдирүүлөр алууга мүмкүндүк берет.
  • Target-Action: Башкаруу элементтеринен (мисалы, батырмалардан) максаттуу объектке билдирүү жөнөтүү механизми.
  • Coordinator: Колдонмодо навигациялык агымдарды башкарган үлгү, навигация логикасын контроллерлерден бөлүп турат.
  • Dependency Injection: Объекттин көзкарандылыгын тыштан киргизүү үлгү, өзүнөн түзүүнүн ордуна.
// Singleton мисалы
class SettingsManager {
    static let shared = SettingsManager() // Бир гана экземпляр

    private init() {
        // Чектелген инициализатор, сырттан түзүүнү алдын алуу
    }

    var appVersion: String {
        return Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String ?? "Белгисиз"
    }
}

// Колдонуу
let settings = SettingsManager.shared
print("Колдонмо версиясы: \(settings.appVersion)")
// Delegate мисалы (жай)
protocol ButtonDelegate: AnyObject {
    func buttonWasTapped(_ button: UIButton)
}

class MyButton: UIButton {
    weak var delegate: ButtonDelegate? // Delegate мүчөсү

    override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
        super.touchesEnded(touches, with: event)
        delegate?.buttonWasTapped(self) // Delegate методун чакыруу
    }
}

class ViewController: UIViewController, ButtonDelegate {
    override func viewDidLoad() {
        super.viewDidLoad()
        let myButton = MyButton(frame: CGRect(x: 50, y: 50, width: 100, height: 40))
        myButton.setTitle("Тийсеңиз", for: .normal)
        myButton.backgroundColor = .blue
        myButton.delegate = self // Delegate коюу
        view.addSubview(myButton)
    }

    func buttonWasTapped(_ button: UIButton) {
        print("Батырма басылды ViewControllerдө")
    }
}