SlideShare a Scribd company logo
1 of 20
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

Viewers also liked

[Seminar] Hướng dẫn viết test case
[Seminar] Hướng dẫn viết test case[Seminar] Hướng dẫn viết test case
[Seminar] Hướng dẫn viết test caseLe Vu Trung Thanh
 
69 câu hỏi phỏng vấn kỹ sư Công nghệ Thông tin
69 câu hỏi phỏng vấn kỹ  sư Công nghệ Thông tin69 câu hỏi phỏng vấn kỹ  sư Công nghệ Thông tin
69 câu hỏi phỏng vấn kỹ sư Công nghệ Thông tinVu Hung Nguyen
 
Bài 6: Thiết kế cơ sở dữ liệu - Giáo trình FPT
Bài 6: Thiết kế cơ sở dữ liệu - Giáo trình FPTBài 6: Thiết kế cơ sở dữ liệu - Giáo trình FPT
Bài 6: Thiết kế cơ sở dữ liệu - Giáo trình FPTMasterCode.vn
 
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
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 FPTBà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
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 FPTMasterCode.vn
 
Intertextualidade entre Os Lusíadas e Mensagem
Intertextualidade entre Os Lusíadas e MensagemIntertextualidade entre Os Lusíadas e Mensagem
Intertextualidade entre Os Lusíadas e MensagemPaulo Vitorino
 
18 cách kiếm tiền online uy tín nhất
18 cách kiếm tiền online uy tín nhất18 cách kiếm tiền online uy tín nhất
18 cách kiếm tiền online uy tín nhấtkiemtienonline2030
 
Fisiologia de los Líquidos Corporales
Fisiologia de los Líquidos CorporalesFisiologia de los Líquidos Corporales
Fisiologia de los Líquidos CorporalesMajo Marquez
 
Liquidos Y Electrolitos
Liquidos Y ElectrolitosLiquidos Y Electrolitos
Liquidos Y Electrolitosurologia
 

Viewers also liked (9)

[Seminar] Hướng dẫn viết test case
[Seminar] Hướng dẫn viết test case[Seminar] Hướng dẫn viết test case
[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
69 câu hỏi phỏng vấn kỹ  sư Công nghệ Thông tin69 câu hỏi phỏng vấn kỹ  sư Công nghệ Thông tin
69 câu hỏi phỏng vấn kỹ sư Công nghệ Thông tin
 
IoC and Mapper in C#
IoC and Mapper in C#IoC and Mapper in C#
IoC and Mapper in C#
 
Bài 6: Thiết kế cơ sở dữ liệu - Giáo trình FPT
Bài 6: Thiết kế cơ sở dữ liệu - Giáo trình FPTBài 6: Thiết kế cơ sở dữ liệu - Giáo trình FPT
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
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 FPTBà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
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
Intertextualidade entre Os Lusíadas e MensagemIntertextualidade entre Os Lusíadas e Mensagem
Intertextualidade entre Os Lusíadas e Mensagem
 
18 cách kiếm tiền online uy tín nhất
18 cách kiếm tiền online uy tín nhất18 cách kiếm tiền online uy tín nhất
18 cách kiếm tiền online uy tín nhất
 
Fisiologia de los Líquidos Corporales
Fisiologia de los Líquidos CorporalesFisiologia de los Líquidos Corporales
Fisiologia de los Líquidos Corporales
 
Liquidos Y Electrolitos
Liquidos Y ElectrolitosLiquidos Y Electrolitos
Liquidos Y Electrolitos
 

Similar to Design pattern iOS

Tài liệu Lập trình Zend Framework 2.x
Tài liệu Lập trình Zend Framework 2.xTài liệu Lập trình Zend Framework 2.x
Tài liệu Lập trình Zend Framework 2.xZendVN
 
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.pptxLậ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.pptxLmTrn286060
 
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.pptxLậ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.pptxLmTrn286060
 
00 overview of_sql_server
00 overview of_sql_server00 overview of_sql_server
00 overview of_sql_serverthai
 
gioi thieu ve java
gioi thieu ve javagioi thieu ve java
gioi thieu ve javaDat Ngo
 
Bao cao-cloud-linux-hosting
Bao cao-cloud-linux-hostingBao cao-cloud-linux-hosting
Bao cao-cloud-linux-hostinglaonap166
 
[Cntt] bài giảng java khtn hcm
[Cntt] bài giảng java   khtn hcm[Cntt] bài giảng java   khtn hcm
[Cntt] bài giảng java khtn hcmHong Phuoc Nguyen
 
Các phương pháp phân tích thiết kế phần.pptx
Các phương pháp phân tích thiết kế phần.pptxCác phương pháp phân tích thiết kế phần.pptx
Các phương pháp phân tích thiết kế phần.pptxdong92356
 
Owncloud - cloud solution for SME
Owncloud - cloud solution for SMEOwncloud - cloud solution for SME
Owncloud - cloud solution for SMEMichael Phan
 
NMCNPM_14_Tuan4nhomsvk17thuchien111.pptx
NMCNPM_14_Tuan4nhomsvk17thuchien111.pptxNMCNPM_14_Tuan4nhomsvk17thuchien111.pptx
NMCNPM_14_Tuan4nhomsvk17thuchien111.pptxLnNguynThnh4
 
Print_to_OOP.pdf
Print_to_OOP.pdfPrint_to_OOP.pdf
Print_to_OOP.pdfcLong52
 

Similar to Design pattern iOS (20)

Tài liệu Lập trình Zend Framework 2.x
Tài liệu Lập trình Zend Framework 2.xTài liệu Lập trình Zend Framework 2.x
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.pptxLậ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
 
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.pptxLậ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
1.OOP Introduction (1).pptx1.OOP Introduction (1).pptx
1.OOP Introduction (1).pptx
 
Bai01 oop overview
Bai01 oop overviewBai01 oop overview
Bai01 oop overview
 
00 overview of_sql_server
00 overview of_sql_server00 overview of_sql_server
00 overview of_sql_server
 
Subversion Seminar [2010]
Subversion Seminar [2010]Subversion Seminar [2010]
Subversion Seminar [2010]
 
Gioi thieu ve_java
Gioi thieu ve_javaGioi thieu ve_java
Gioi thieu ve_java
 
gioi thieu ve java
gioi thieu ve javagioi thieu ve java
gioi thieu ve java
 
Dsd02 sta
Dsd02 staDsd02 sta
Dsd02 sta
 
Bao cao-cloud-linux-hosting
Bao cao-cloud-linux-hostingBao cao-cloud-linux-hosting
Bao cao-cloud-linux-hosting
 
[Cntt] bài giảng java khtn hcm
[Cntt] bài giảng java   khtn hcm[Cntt] bài giảng java   khtn hcm
[Cntt] bài giảng java khtn hcm
 
Các phương pháp phân tích thiết kế phần.pptx
Các phương pháp phân tích thiết kế phần.pptxCác phương pháp phân tích thiết kế phần.pptx
Các phương pháp phân tích thiết kế phần.pptx
 
Data storage Android
Data storage AndroidData storage Android
Data storage Android
 
Owncloud - cloud solution for SME
Owncloud - cloud solution for SMEOwncloud - cloud solution for SME
Owncloud - cloud solution for SME
 
04 de cuong
04 de cuong04 de cuong
04 de cuong
 
Chapter1
Chapter1Chapter1
Chapter1
 
NMCNPM_14_Tuan4nhomsvk17thuchien111.pptx
NMCNPM_14_Tuan4nhomsvk17thuchien111.pptxNMCNPM_14_Tuan4nhomsvk17thuchien111.pptx
NMCNPM_14_Tuan4nhomsvk17thuchien111.pptx
 
Print_to_OOP.pdf
Print_to_OOP.pdfPrint_to_OOP.pdf
Print_to_OOP.pdf
 
Dsd04 sta
Dsd04 staDsd04 sta
Dsd04 sta
 

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