SlideShare a Scribd company logo
2
Most read
6
Most read
8
Most read
Design Pattern qua ví dụ thực tế
Chung VĩnhKhang
Cựu sinh viên khóa 09 - 13
Tại sao chọn chủ đề này?
• Thực tế, ngành công nghiệp phần mềm có ứng dụng Design Pattern rấtnhiều!
• Phỏng vấn khi xin việc: là điểm cộng đối với các vị trí phổ thông, và là bắt buộc đối vớivị trí quan trọng!
• Ranh giới của doer và thinker (coder vs developer)!
• Bạn xứng đáng sở hữu và được công nhận năng lực thiết kế cũng như đạt được thu nhập tương xứng!
Nội dung chính
1. Ý nghĩa & nhu cầu của Design Pattern
2. Các ví dụ thực tế áp dụng Design Pattern
I …. her last night
a) see b) saw
Bài toán tổng quát: bài tập chia thì quá khứ đơn / Simple Past Tense
Cách giải: Có 1 số trạng từ để nhận biết
Tổng của 2 số là 70. Hiệu 2 số là 10. Tìm hai số đó?
Bài toán tổng quát: tìm 2 số khi biết tổng và hiệu
Cách giải: ...
1. Ý nghĩa & nhu cầu của Design Pattern
Lập trình tìm số chẵn trong mảng
Lập trình tìm số nguyên tố trong mảng
1. Ý nghĩa & nhu cầu của Design Pattern
Bài toán tổng quát: Tìm kiếm thỏa điều kiện
Cách giải: …
Thiết kế class cho chức năng đổi súng của Contra
Thiết kế class cho chức năng biến hình của Songoku
Design Pattern
Design Pattern (Mẫu thiết kế) là các bài toán thiết kế thông dụng
và cách giải quyết nó, tuân thủ các nguyên lý thiết kế hướng đối
tượng
Lợi ích:
• Từ điển, từ vựng để thiết kế phần mềm
• Giải quyết bài toán thiết kế và giảm bớt thời gian tái thiết kế
Nhược điểm:
• Khả năng áp dụng tùy vào kinh nghiệm vì phải cân nhắc đến
tiến độ, hiệu suất thực thi
Theo quyển Design Patterns: Elements of Reusable
Object-Oriented Software của Gang Of Four (1994)
• Wiki danh sách các design pattern
https://en.wikipedia.org/wiki/Software_design_pattern#Classification
_and_list
1 số khái niệm gần với Design Pattern
• MVC, MVVM, n-Tiers, Flux, …
 Architectural Pattern
• IRunnable, getFullName(), API_TOKEN, AllowToEdit CanEdit …
 Naming Convention, thường áp dụng cho 1 ngôn ngữ lập trình nhất định
• for (i=0; i<10; i++), if (list == null) throw new NullPointerException();…
 Programming Idiom, thường áp dụng cho 1 ngôn ngữ lập trình nhất định
• Carousel, WYSIWYG , Testimonials, Dashboard …
 UI Pattern / UI Design Pattern
Ruby on rails, Wordpress, Joomla , SpringBoot, Django …
 Framework / CMS
Design Pattern áp dụng vào đâu?
Social network: Facebook, Twitter, Linkedin, Zalo, …
Ecommerce: Lazada, Agoda, CGV Cinema, Vietnamairline, The Coffeehouse …
Enterprise: Trello, Odoo, Kế toán MISA, KiotViet, Phần mềm quản lý giáo vụ cho trường cấp 3,…
Entertainment: Karaoke app, Candy crush, VoLamTruyenKy, Audition, The Sim, …
. . .
Chúng ta lúc đi học sẽ luôn thắc mắc
• Học lập trình toàn code chạy ra kết quả màn hình
Console trắng đen vậy có áp dụng được gì cho thực
tế? Ít nhất phải có sản phẩm hoàn chỉnh
• Liệu ra ngoài thực tế mình có được làm cái mình
được học không?
Thực tế
Thị trường Software ở VN
- theo báo cáo thống kê của Vietnamwork2017
Thị trường Outsourcing
nhất là ở VN, đang
phát triển nhiều ở đoạn
này
Công việc lập trình ở thực tế không phải là luôn được làm 1 sản phẩm phần mềm hoàn toàn mới
Design Pattern qua ví dụ thực tế
Nhu cầu thực tế
Design Pattern qua ví dụ thực tế
2. Ví dụ Design Pattern trong thực tế
CvOU: phần mềm vào tạo cv theo mẫu giao diện có sẵn
• Chức năng: cho phép chọn 1 trong 2 loại giao diện trình bày.
CV tạo bởi cvou
Họ tên
Sdt
Kinh nghiệm #1
Kinh nghiệm #2
Kinh nghiệm #3
CV tạo bởi cvou
Kinh
nghiệm #1
Họ tên
Sdt
Hinh
Kinh
nghiệm #2
Kinh
nghiệm #3
CvBuilder
ListViewCvBuilder GridViewCvBuilder
CvDirector
buildHeader(name :String, phone:String, photo :String)
buildBody(exps :ArrayList<String>, gpa :Double)
getHtml() : String
Hinh
build()
getHtml() : String
GPA
GPA
Builder Pattern
KpiOU:phần mềm đo lường hiệu quả nhân viên
Scorecard
EmployeeScorecard OrganizationalScorecard
Weight
Cascade()
Composite
Pattern
HeroOU: thiết kế nhân vật trong game có hành
vi theo cấp độ
Hero
Attack() : Int
Move()
SwitchToLevel(level :HeroLevelStrategy)
__________________________________________
LevelStrategy: HeroLevelStrattegy
HeroLevelStrategy
Attack(hero: Hero) : Int
Move(hero: Hero)
HeroLevel1Strategy
Attack(hero: Hero) : Int
Move(hero: Hero)
HeroLevel2Strategy
Attack(hero: Hero) : Int
Move(hero: Hero)
Strategy
Pattern
Tài liệu tham khảo
Xin cảm ơn thầy và
các bạn đã theo dõi
ChungVĩnh Khang
Email: chungvinhkhang@live.com
Blog: vkhangyang.wordpress.com

More Related Content

PDF
SOLID - Những nguyên lí sống còn
PPTX
Design Pattern - Những công thức vàng trong thiết kế
PPTX
Code Refactoring: Thay đổi nhỏ - Lợi ích lớn
DOCX
Coding standard
DOCX
Giới thiệu về Rational Rose và Các diagram
PDF
Clean code - Trở thành một lập trình viên tốt hơn
PDF
Báo cáo Quản lý dự án phần mềm PTIT
PDF
Hop ngu mips
SOLID - Những nguyên lí sống còn
Design Pattern - Những công thức vàng trong thiết kế
Code Refactoring: Thay đổi nhỏ - Lợi ích lớn
Coding standard
Giới thiệu về Rational Rose và Các diagram
Clean code - Trở thành một lập trình viên tốt hơn
Báo cáo Quản lý dự án phần mềm PTIT
Hop ngu mips

What's hot (20)

PDF
Trí tueeuj nhân tạo
PPT
Extreme programming
PDF
Luyện cách hỏi
PDF
Cơ bản về visual basic
DOCX
Giáo trình c++ full tiếng việt
PDF
Bài 2 Làm quen với môi trường PHP và MySQL (phần 2) - Giáo trình FPT
PPTX
Chess with Java
PDF
Quản lý phòng ban
PPTX
Quản trị dự án công nghệ thông tin
PPT
Danh Sach Lien Ket
DOC
Chuong3 lập trình hợp ngữ
PPTX
Writing clean code in C# and .NET
PPT
Sql injection demo - it-slideshares.blogspot.com
PPT
Giáo trình Phân tích và thiết kế giải thuật - CHAP 1
PPTX
Multi-threaded Programming in JAVA
PDF
Bài tập xâu cơ bản-nâng cao
PDF
Thiết kế csdl quản lý nhân sự
DOCX
Bài giảng Lập trình cơ bản - truongkinhtethucpham.com
PDF
Phần 12: Hàm (Nâng cao)
PDF
UML dan Use Case View
Trí tueeuj nhân tạo
Extreme programming
Luyện cách hỏi
Cơ bản về visual basic
Giáo trình c++ full tiếng việt
Bài 2 Làm quen với môi trường PHP và MySQL (phần 2) - Giáo trình FPT
Chess with Java
Quản lý phòng ban
Quản trị dự án công nghệ thông tin
Danh Sach Lien Ket
Chuong3 lập trình hợp ngữ
Writing clean code in C# and .NET
Sql injection demo - it-slideshares.blogspot.com
Giáo trình Phân tích và thiết kế giải thuật - CHAP 1
Multi-threaded Programming in JAVA
Bài tập xâu cơ bản-nâng cao
Thiết kế csdl quản lý nhân sự
Bài giảng Lập trình cơ bản - truongkinhtethucpham.com
Phần 12: Hàm (Nâng cao)
UML dan Use Case View
Ad

Similar to Design Pattern qua ví dụ thực tế (20)

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
Introduction to Design Pattern
PDF
Sinh vienit.net --bao-cao-design_patterns
PPTX
Design pattern iOS
PDF
Seminar apply OOP in maintain software
PDF
5 implementation
PPTX
Clean code
DOC
Core java 1
 
PPTX
báo-cáo-đồ-án-công-nghệ-phần-mềm (1).pptx
PPTX
TT_MTKPM.pptx
PDF
Ccmtptpm 13 thietkeclass
PDF
Builder pattern
PDF
Module1 - Hệ thống thông tin và Mô hình hoá trực quan.pdf
ODP
Phong cách phát triển mở (MHST 2014)
PPTX
Clean code
PDF
Builder Pattern
DOC
Phan Tich Httt Bang Uml
PDF
Bai11 ooad bieu_dolop
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
Introduction to Design Pattern
Sinh vienit.net --bao-cao-design_patterns
Design pattern iOS
Seminar apply OOP in maintain software
5 implementation
Clean code
Core java 1
 
báo-cáo-đồ-án-công-nghệ-phần-mềm (1).pptx
TT_MTKPM.pptx
Ccmtptpm 13 thietkeclass
Builder pattern
Module1 - Hệ thống thông tin và Mô hình hoá trực quan.pdf
Phong cách phát triển mở (MHST 2014)
Clean code
Builder Pattern
Phan Tich Httt Bang Uml
Bai11 ooad bieu_dolop
Ad

Design Pattern qua ví dụ thực tế

  • 1. Design Pattern qua ví dụ thực tế Chung VĩnhKhang Cựu sinh viên khóa 09 - 13
  • 2. Tại sao chọn chủ đề này? • Thực tế, ngành công nghiệp phần mềm có ứng dụng Design Pattern rấtnhiều! • Phỏng vấn khi xin việc: là điểm cộng đối với các vị trí phổ thông, và là bắt buộc đối vớivị trí quan trọng! • Ranh giới của doer và thinker (coder vs developer)! • Bạn xứng đáng sở hữu và được công nhận năng lực thiết kế cũng như đạt được thu nhập tương xứng!
  • 3. Nội dung chính 1. Ý nghĩa & nhu cầu của Design Pattern 2. Các ví dụ thực tế áp dụng Design Pattern
  • 4. I …. her last night a) see b) saw Bài toán tổng quát: bài tập chia thì quá khứ đơn / Simple Past Tense Cách giải: Có 1 số trạng từ để nhận biết Tổng của 2 số là 70. Hiệu 2 số là 10. Tìm hai số đó? Bài toán tổng quát: tìm 2 số khi biết tổng và hiệu Cách giải: ... 1. Ý nghĩa & nhu cầu của Design Pattern
  • 5. Lập trình tìm số chẵn trong mảng Lập trình tìm số nguyên tố trong mảng 1. Ý nghĩa & nhu cầu của Design Pattern Bài toán tổng quát: Tìm kiếm thỏa điều kiện Cách giải: … Thiết kế class cho chức năng đổi súng của Contra Thiết kế class cho chức năng biến hình của Songoku
  • 6. Design Pattern Design Pattern (Mẫu thiết kế) là các bài toán thiết kế thông dụng và cách giải quyết nó, tuân thủ các nguyên lý thiết kế hướng đối tượng Lợi ích: • Từ điển, từ vựng để thiết kế phần mềm • Giải quyết bài toán thiết kế và giảm bớt thời gian tái thiết kế Nhược điểm: • Khả năng áp dụng tùy vào kinh nghiệm vì phải cân nhắc đến tiến độ, hiệu suất thực thi
  • 7. Theo quyển Design Patterns: Elements of Reusable Object-Oriented Software của Gang Of Four (1994) • Wiki danh sách các design pattern https://en.wikipedia.org/wiki/Software_design_pattern#Classification _and_list
  • 8. 1 số khái niệm gần với Design Pattern • MVC, MVVM, n-Tiers, Flux, …  Architectural Pattern • IRunnable, getFullName(), API_TOKEN, AllowToEdit CanEdit …  Naming Convention, thường áp dụng cho 1 ngôn ngữ lập trình nhất định • for (i=0; i<10; i++), if (list == null) throw new NullPointerException();…  Programming Idiom, thường áp dụng cho 1 ngôn ngữ lập trình nhất định • Carousel, WYSIWYG , Testimonials, Dashboard …  UI Pattern / UI Design Pattern Ruby on rails, Wordpress, Joomla , SpringBoot, Django …  Framework / CMS
  • 9. Design Pattern áp dụng vào đâu? Social network: Facebook, Twitter, Linkedin, Zalo, … Ecommerce: Lazada, Agoda, CGV Cinema, Vietnamairline, The Coffeehouse … Enterprise: Trello, Odoo, Kế toán MISA, KiotViet, Phần mềm quản lý giáo vụ cho trường cấp 3,… Entertainment: Karaoke app, Candy crush, VoLamTruyenKy, Audition, The Sim, … . . .
  • 10. Chúng ta lúc đi học sẽ luôn thắc mắc • Học lập trình toàn code chạy ra kết quả màn hình Console trắng đen vậy có áp dụng được gì cho thực tế? Ít nhất phải có sản phẩm hoàn chỉnh • Liệu ra ngoài thực tế mình có được làm cái mình được học không?
  • 11. Thực tế Thị trường Software ở VN - theo báo cáo thống kê của Vietnamwork2017
  • 12. Thị trường Outsourcing nhất là ở VN, đang phát triển nhiều ở đoạn này Công việc lập trình ở thực tế không phải là luôn được làm 1 sản phẩm phần mềm hoàn toàn mới
  • 16. 2. Ví dụ Design Pattern trong thực tế
  • 17. CvOU: phần mềm vào tạo cv theo mẫu giao diện có sẵn • Chức năng: cho phép chọn 1 trong 2 loại giao diện trình bày. CV tạo bởi cvou Họ tên Sdt Kinh nghiệm #1 Kinh nghiệm #2 Kinh nghiệm #3 CV tạo bởi cvou Kinh nghiệm #1 Họ tên Sdt Hinh Kinh nghiệm #2 Kinh nghiệm #3 CvBuilder ListViewCvBuilder GridViewCvBuilder CvDirector buildHeader(name :String, phone:String, photo :String) buildBody(exps :ArrayList<String>, gpa :Double) getHtml() : String Hinh build() getHtml() : String GPA GPA Builder Pattern
  • 18. KpiOU:phần mềm đo lường hiệu quả nhân viên Scorecard EmployeeScorecard OrganizationalScorecard Weight Cascade() Composite Pattern
  • 19. HeroOU: thiết kế nhân vật trong game có hành vi theo cấp độ Hero Attack() : Int Move() SwitchToLevel(level :HeroLevelStrategy) __________________________________________ LevelStrategy: HeroLevelStrattegy HeroLevelStrategy Attack(hero: Hero) : Int Move(hero: Hero) HeroLevel1Strategy Attack(hero: Hero) : Int Move(hero: Hero) HeroLevel2Strategy Attack(hero: Hero) : Int Move(hero: Hero) Strategy Pattern
  • 21. Xin cảm ơn thầy và các bạn đã theo dõi ChungVĩnh Khang Email: chungvinhkhang@live.com Blog: vkhangyang.wordpress.com