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дө")
}
}