SlideShare a Scribd company logo
Design pattern trong iOS
Người thực hiện:
Nguyễn Đức Hà
Khái niệm design pattern
Solution Problem
Context
Lợi ích của design pattern
Tăng khả năng trao đổi, giao tiếp trong công việc
Tiết kiệm thời gian nghiên cứu vấn đề
Có thể được áp dụng cho bất kì ngôn ngữ nào
Tăng khả năng cài đặt và bảo trì
Phân loại design pattern
Creational
• Singleton
• Abstract
Factory
• Builder
Structural
• Facade
• Decorator
• Adapter
Behavioral
• Observer
• Command
• Memento
Singleton
• Một class chỉ có một instance duy nhất
• NSFileManager, UIApplication, NSURLSession,
NSURLDefault,…
• Trường hợp sử dụng: khi cần truy cập các tài
nguyên toàn cục như setting, session.
• Lưu ý: instance của singleton không thể được
copy, retain, release.
Abstract Factory
• Cung cấp 1 interface chung cho các class
tương tự nhau
• Che giấu sự phức tạp trong việc khởi tạo đối
tượng
• NSNumber, NSString, NSArray, NSDictionary,…
• Sử dụng khi có một nhóm các class liên quan
hoặc phụ thuộc vào nhau nhằm làm giảm độ
phức tạp.
Facade
• Cung cấp interface high level, đóng gói các API
low level
Tăng tính dễ sử dụng
Giảm độ phức tạp của hệ thống con
• Ví dụ: UIImage
• Sử dụng khi hệ thống con có các API phức tạp
không cần thiết để người dùng sử dụng => tạo
API level cao hơn.
Decorator
• Thêm các hành vi, chức năng vào đối tượng
mà không làm thay đổi code của đối tượng.
• Hai cách sử dụng phổ biến: Category,
Delegation
Category
• Thêm các hàm vào một object mà không phải
tạo class con kế thừa.
• Chú ý:
– Không được phép thêm property vào category.
– Không viết đè các phương thức của class vì có thể
tạo ra ảnh hưởng không mong muốn.
Delegation
Delegation
• Ví dụ: UITableView, UIScrollView
• DataSource: tương tự delegate
• Điểm khác nhau:
Delegate DataSource
Điều khiển giao diện người
dùng
Điều khiển dữ liệu
Command
• Đóng gói một request thành đối tượng
Linh hoạt hơn
Có thể truyền giữa các đối tượng, lưu trữ,
thay đổi.
• 2 loại: Target – Action, Invocation
Target - Action
• Truyền thông điệp từ UIControl object (trong
UI) sang object khác.
• Target: thường là custom class của UIView,
UIViewController.
• Action: là thông điệp được truyền đến target
Invocation
NSInvocation
Target
ArgumentSelector
Invocation
• Sử dụng trong việc:
– Quản lý hoàn tác
– Chuyển tiếp thông điệp
– Xử lý timer
Observer
• Quan hệ một – nhiều giữa các đối tượng.
• Đối tượng có sự thay đổi thông báo cho các
đối tượng khác => cập nhật
• 2 cách cài đặt phổ biến: Key Value Observer và
NSNotification
NSNotification
• Mô hình publisher – subcriber
• Publisher: gửi thông điệp
• Subcriber: các đối tượng nhận thông điệp
• Quan hệ lỏng lẻo: publisher không cần biết
thông tin gì về subcriber
• Sử dụng một singleton để quản lý việc gửi
thông điệp và nhận thông điệp:
NSNotificationCenter
KVO
• Theo dõi sự thay đổi của một thuộc tính.
• Không sử dụng đối tượng trung gian để quản
lý, thông điệp được chuyển trực tiếp đến đối
tượng nhận.
• Cách sử dụng:
– addObserver:forKeyPath:options:context:
– Observer implement hàm
observeValueForKeyPath:ofObject:change:context
:
References
• https://developer.apple.com/legacy/library/documentation
/Cocoa/Conceptual/CocoaFundamentals/CocoaDesignPatte
rns/CocoaDesignPatterns.html#//apple_ref/doc/uid/TP400
02974-CH6-SW6
• https://www.raywenderlich.com/46988/ios-design-
patterns
• https://www.raywenderlich.com/86477/introducing-ios-
design-patterns-in-swift-part-1
• https://sourcemaking.com/design_patterns
• http://www.tutorialspoint.com/design_pattern/
• http://www.appcoda.com/understanding-key-value-
observing-coding/
Cảm ơn mọi người đã lắng nghe

More Related Content

PDF
Giới thiệu Nuxt.js
PPTX
Các công cụ thường dùng trong xcode
PPTX
Rxswift
PPTX
Giới thiệu Git và một số tính năng cơ bản
PDF
Cocoa勉強会#33-意外に楽に使えるlibcurl
PDF
Swift & ReactiveX – Asynchronous Event-Based Funsies with RxSwift
PPTX
Hướng dẫn sử dụng CocoaPods trong dự án iOS hoặc MacOSX
PPTX
Quản lý bộ nhớ trong khi phát triển ứng dụng Apple iOS
Giới thiệu Nuxt.js
Các công cụ thường dùng trong xcode
Rxswift
Giới thiệu Git và một số tính năng cơ bản
Cocoa勉強会#33-意外に楽に使えるlibcurl
Swift & ReactiveX – Asynchronous Event-Based Funsies with RxSwift
Hướng dẫn sử dụng CocoaPods trong dự án iOS hoặc MacOSX
Quản lý bộ nhớ trong khi phát triển ứng dụng Apple iOS

Viewers also liked (9)

PPTX
[Seminar] Hướng dẫn viết test case
PPTX
69 câu hỏi phỏng vấn kỹ sư Công nghệ Thông tin
PPTX
IoC and Mapper in C#
PDF
Bài 6: Thiết kế cơ sở dữ liệu - Giáo trình FPT
PDF
Bài 5: Các thuật toán sắp xếp và tìm kiếm cơ bản - Giáo trình FPT
PPTX
Intertextualidade entre Os Lusíadas e Mensagem
PPTX
18 cách kiếm tiền online uy tín nhất
PPT
Fisiologia de los Líquidos Corporales
PDF
Liquidos Y Electrolitos
[Seminar] Hướng dẫn viết test case
69 câu hỏi phỏng vấn kỹ sư Công nghệ Thông tin
IoC and Mapper in C#
Bài 6: Thiết kế cơ sở dữ liệu - Giáo trình FPT
Bài 5: Các thuật toán sắp xếp và tìm kiếm cơ bản - Giáo trình FPT
Intertextualidade entre Os Lusíadas e Mensagem
18 cách kiếm tiền online uy tín nhất
Fisiologia de los Líquidos Corporales
Liquidos Y Electrolitos
Ad

Similar to Design pattern iOS (20)

PPTX
Tiếp cận hướng đối tượng, ngôn ngữ mô hình hóa UML
PDF
Tài liệu Lập trình Zend Framework 2.x
PPTX
Lập trình hướng đối tượng Chương 6 Design Pattern.pptx
PPTX
Lập trình hướng đối tượng Chương 6 Design Pattern.pptx
PPTX
1.OOP Introduction (1).pptx
PDF
Bai01 oop overview
PDF
00 overview of_sql_server
PPT
Subversion Seminar [2010]
PDF
B3_10_2024_VHT_Cloud_Native_(Kubernetees_Basic__Practice).pdf
PPTX
MICROSERVICE ARCHITECTURE WITH DOCKER.pptx
PPT
Gioi thieu ve_java
PPT
gioi thieu ve java
PDF
DOC
Bao cao-cloud-linux-hosting
PDF
[Cntt] bài giảng java khtn hcm
PDF
introduction about docker for develop software
PPTX
Các phương pháp phân tích thiết kế phần.pptx
PPTX
DesignPattern-C4-CD4.3-CacXuHuongMoiTrongThietKeHuongDoiTuong.pptx
PPTX
Data storage Android
PDF
Owncloud - cloud solution for SME
Tiếp cận hướng đối tượng, ngôn ngữ mô hình hóa UML
Tài liệu Lập trình Zend Framework 2.x
Lập trình hướng đối tượng Chương 6 Design Pattern.pptx
Lập trình hướng đối tượng Chương 6 Design Pattern.pptx
1.OOP Introduction (1).pptx
Bai01 oop overview
00 overview of_sql_server
Subversion Seminar [2010]
B3_10_2024_VHT_Cloud_Native_(Kubernetees_Basic__Practice).pdf
MICROSERVICE ARCHITECTURE WITH DOCKER.pptx
Gioi thieu ve_java
gioi thieu ve java
Bao cao-cloud-linux-hosting
[Cntt] bài giảng java khtn hcm
introduction about docker for develop software
Các phương pháp phân tích thiết kế phần.pptx
DesignPattern-C4-CD4.3-CacXuHuongMoiTrongThietKeHuongDoiTuong.pptx
Data storage Android
Owncloud - cloud solution for SME
Ad

Design pattern iOS

  • 1. Design pattern trong iOS Người thực hiện: Nguyễn Đức Hà
  • 2. Khái niệm design pattern Solution Problem Context
  • 3. Lợi ích của design pattern Tăng khả năng trao đổi, giao tiếp trong công việc Tiết kiệm thời gian nghiên cứu vấn đề Có thể được áp dụng cho bất kì ngôn ngữ nào Tăng khả năng cài đặt và bảo trì
  • 4. Phân loại design pattern Creational • Singleton • Abstract Factory • Builder Structural • Facade • Decorator • Adapter Behavioral • Observer • Command • Memento
  • 5. Singleton • Một class chỉ có một instance duy nhất • NSFileManager, UIApplication, NSURLSession, NSURLDefault,… • Trường hợp sử dụng: khi cần truy cập các tài nguyên toàn cục như setting, session. • Lưu ý: instance của singleton không thể được copy, retain, release.
  • 6. Abstract Factory • Cung cấp 1 interface chung cho các class tương tự nhau • Che giấu sự phức tạp trong việc khởi tạo đối tượng • NSNumber, NSString, NSArray, NSDictionary,… • Sử dụng khi có một nhóm các class liên quan hoặc phụ thuộc vào nhau nhằm làm giảm độ phức tạp.
  • 7. Facade • Cung cấp interface high level, đóng gói các API low level Tăng tính dễ sử dụng Giảm độ phức tạp của hệ thống con • Ví dụ: UIImage • Sử dụng khi hệ thống con có các API phức tạp không cần thiết để người dùng sử dụng => tạo API level cao hơn.
  • 8. Decorator • Thêm các hành vi, chức năng vào đối tượng mà không làm thay đổi code của đối tượng. • Hai cách sử dụng phổ biến: Category, Delegation
  • 9. Category • Thêm các hàm vào một object mà không phải tạo class con kế thừa. • Chú ý: – Không được phép thêm property vào category. – Không viết đè các phương thức của class vì có thể tạo ra ảnh hưởng không mong muốn.
  • 11. Delegation • Ví dụ: UITableView, UIScrollView • DataSource: tương tự delegate • Điểm khác nhau: Delegate DataSource Điều khiển giao diện người dùng Điều khiển dữ liệu
  • 12. Command • Đóng gói một request thành đối tượng Linh hoạt hơn Có thể truyền giữa các đối tượng, lưu trữ, thay đổi. • 2 loại: Target – Action, Invocation
  • 13. Target - Action • Truyền thông điệp từ UIControl object (trong UI) sang object khác. • Target: thường là custom class của UIView, UIViewController. • Action: là thông điệp được truyền đến target
  • 15. Invocation • Sử dụng trong việc: – Quản lý hoàn tác – Chuyển tiếp thông điệp – Xử lý timer
  • 16. Observer • Quan hệ một – nhiều giữa các đối tượng. • Đối tượng có sự thay đổi thông báo cho các đối tượng khác => cập nhật • 2 cách cài đặt phổ biến: Key Value Observer và NSNotification
  • 17. NSNotification • Mô hình publisher – subcriber • Publisher: gửi thông điệp • Subcriber: các đối tượng nhận thông điệp • Quan hệ lỏng lẻo: publisher không cần biết thông tin gì về subcriber • Sử dụng một singleton để quản lý việc gửi thông điệp và nhận thông điệp: NSNotificationCenter
  • 18. KVO • Theo dõi sự thay đổi của một thuộc tính. • Không sử dụng đối tượng trung gian để quản lý, thông điệp được chuyển trực tiếp đến đối tượng nhận. • Cách sử dụng: – addObserver:forKeyPath:options:context: – Observer implement hàm observeValueForKeyPath:ofObject:change:context :
  • 19. References • https://developer.apple.com/legacy/library/documentation /Cocoa/Conceptual/CocoaFundamentals/CocoaDesignPatte rns/CocoaDesignPatterns.html#//apple_ref/doc/uid/TP400 02974-CH6-SW6 • https://www.raywenderlich.com/46988/ios-design- patterns • https://www.raywenderlich.com/86477/introducing-ios- design-patterns-in-swift-part-1 • https://sourcemaking.com/design_patterns • http://www.tutorialspoint.com/design_pattern/ • http://www.appcoda.com/understanding-key-value- observing-coding/
  • 20. Cảm ơn mọi người đã lắng nghe