Tư Vấn Giải Pháp Giao Thông, Vận Tải Thông Minh
Nhập môn Design Pattern (Phong cách kiếm hiệp)
Nhập đề
Kinh thư ghi lại rằng, con đường tu chân có 3 cảnh giới: Luyện khí, Trúc cơ và Kết đan. Luyện khí là quá trình rèn thân luyện thể, cho phàm thân kiên cường dẻo dai. Trúc cơ là quá trình du nhập thiên địa linh khí vào thể nội, giúp khai thông kinh mạch. Khi thiên địa linh khí trong đan điền đạt tới một nồng độ nhất định, sẽ kết thành Kim Đan, đặt bước chân đầu tiên con đường tu chân đại đạo.
Con đường khởi đầu của code học cũng có 3 cảnh giới: Học đồ (Junior Developer), Học sĩ (Developer), Đại sư (Senior Developer). Để đạt đến cảnh giới Đại sư (senior), bất kì Học Sĩ (dev) nào cũng cần phải tường tận vài Design Pattern cơ bản để phòng thân. Bài viết này do tại hạ viết ra trong một phút cao hứng nhất thời, nhằm chia sẻ với các nhân sĩ võ lâm trên con đường truy cầu đại đạo.
Nhiều kẻ khi đạt đến cảnh giới Đại sư (Senior) cứ ngỡ rằng mình đã đạt đến cảnh giới tối cao của võ học mà không biết rằng “Thiên ngoại hữu thiên, nhân ngoại hữu nhân”. Phía trên cảnh giới Đại sư còn có vô số cao thủ đạt tới những cảnh giới khác như Chưởng Môn (Project Manager) hoặc Tông sư (Software Architect). Những kẻ này hiếm thấy như phượng mao lân giác (lông phượng sừng lân), mang một thân võ công cao ngất ngưởng và lương cao ngất ngưỡng, lướt gió mà đi, đạp mây mà về. Do cảnh giới bản thân còn thấp, bần đạo tạm thời không bàn tới.
Hỏi thế gian DS là chi, mà bọn Dev thề nguyền sống chết
Nói một cách đơn giản, design pattern là các mẫu thiết kế có sẵn, dùng để giải quyết một vấn đề. Áp dụng mẫu thiết kế này sẽ làm code dễ bảo trì, mở rộng hơn (Có thể sẽ khó hiểu hơn 1 chút). Nói văn hoa, design pattern là tinh hoa trong võ học, đã được các bậc tông sư đúc kết, truyền lưu từ đời này qua đời khác. Design pattern là thiết kế dựa trên code, nó nằm ở một cảnh giới cao hơn CODE, do đó đệ tử của bất kì môn phái nào (C#, Java, Python) cũng có thể áp dụng vào được. Ảnh lấy từ bí kíp Head First Design Pattern (xem phía dưới).
Trước khi dạy võ, các bậc đạo sư luôn dặn học trò rằng học võ là để tu thân hành hiệp giúp đời, không phải để ý vào một thân võ học mà đi bắt nạt kẻ yếu. Nay ta cũng có một lời khuyên tương tự: Học design pattern là để nâng cao trình độ, để giải quyết vấn đề, không phải đế lấy ra lòe thiên hạ. Nhiều kẻ học nghệ chưa tinh, ngựa non háu đá, nhét design pattern vào dự án một cách vô tội vạ, nhẹ thì tẩu hỏa nhập ma, võ công sụt giảm, nặng thì hồn phi phách tán, vĩnh kiếp không được siêu sinh. Các đạo hữu hãy nhìn kẻ than tàn ma dại phía dưới mà làm gương.
Design Pattern Kiếm Phổ
Bí kíp võ công đầu tiên nhắc đến design pattern là Design Patterns: Elements of Reusable Object-Oriented Software. Tuy nhiên, khẩu quyết trong quyển này khá khô cứng, khó truyền dạy, do đó các bậc cao nhân đã chỉnh sửa, xuất bản 2 cuốn bí kíp dễ hiểu hơn cho hậu thế là Head First Design Patterns và Design Patterns For Dummies. Thuở xưa khi đặt bước chân đầu tiên trên con đường cầu đạo-cạo đầu, bần đạo cũng tự tu luyện từ hai cuốn bí kiếp này. Các đạo hữu có thể lên mạng tải về ngâm cứu.
Khẩu quyết nhập môn Design Pattern
Có khá nhiều chiêu thức design pattern lưu lạc trong chốn giang hồ, song ta có thể tạm phân loại làm Tam Thức:
- Khởi Thức (Creational Design Pattern): Liên quan đến việc khởi tạo object. VD: Factory, Object Pool, Abstract Factory, Builder.
- Cấu Thức (Structure Design Pattern): Liên quan đến kết cấu, liên hệ giữa các object. VD: Adapter, Bridge, Decorator, Proxy, Composite, Facede.
- Vi Thức (Behavioral Design Pattern): Liên quan tới hành vi của các object. VD: Iterator, Mementor, Strategy, Template Method, Visitor
- Khẩu quyết một chiêu thức Design Pattern thường có 3 phần. Khi muốn học một design pattern mới, hãy tập trung chú ý vào 3 phần này:
- Thức Đề: Vấn đề mà design pattern đó giải quyết
- Thức Đồ: Sơ đồ UML mô tả design pattern
- Thức Phổ: Code minh họa
Dưới đâu là một Design pattern đơn giản nhất mà hầu như học sĩ nào cũng biết: Đơn Thân Độc Mã, thuộc Khởi Thức, hay còn gọi là Singeton, thuộc loại Creational Design Pattern.
- Thức Đề: Design Pattern này được dùng khi ta muốn đảm bảo chỉ có duy nhất một object được sinh ra trong toàn hệ thống.
- Thức Đồ:
-
- Thức Phổ:
1234567891011public class Singleton {private static final Singleton INSTANCE = new Singleton ( ) ;private Singleton ( ) { }public static Singleton getInstance ( ) {return INSTANCE ;}}Thay lời kết
Xin nhắc lại một lần nữa: Design Pattern được tạo ra để giải quyết vấn đề, chứ không phải để phức tạp hóa nó. Các bậc cao nhân có câu: nước có thể dâng thuyền, cũng có thể lật thuyền. Design Pattern có thể giải quyết vấn đề, cũng có thể làm nó rắc rối phức tạp hơn.
Kẻ sĩ dùng design pattern cũng chia làm ba cảnh giới. Kẻ sơ nhập thì nhìn đâu cũng thấy pattern, chỉ lo áp dụng, nhét rất nhiều pattern vào mà không quan tâm đến thiết kế. Lăn lộn giang hồ một thời gian, đến cảnh giới cao thủ, sẽ học được rằng khi nào cần dùng pattern, khi nào không. Đến cấp bậc đại sư, chỉ dùng pattern khi đã rõ lợi hại của nó, biết lấy sự đơn giản hài hòa của design tổng thể làm trọng. Có thể tổng kết quá trình này bằng một câu:
Khi chưa học đạo, ta thấy núi là núi, sông là sông. Khi mới học đạo, ta thấy núi không phải là núi, sông không phải là sông. Sau khi học đạo, ta lại thấy núi chỉ là núi, sông chỉ là sông.
toidicodedao
- Thức Phổ:
- tìm nhóm công nghệ ở Hà Nội cùng tham gia triển khai dự án startup về giáo dục trực tuyến
- Vài thủ thuật nhỏ khi dùng javascript
- 9 qui luật bất di bất dịch trong ngành lập trình
- đang cần 1 build Loyalty System có một số chức năng giống Open Loyalty
- Tạo email ảo với tài khoản Outlook, hotmail, live
- searching for python/odoo developers/ freelancers in Karachi or Online
- Thực hiện nhiều hàm đồng thời trong Java
- cần mua ứng dụng cho khách đặt vận đơn
- E-Logistics: Công nghệ cao, thân thiện
- Platform là gì?
- Cần book báo chí viết bài. Các bạn ib báo giá mình nhé
- App tìm kiếm và chia sẻ địa chỉ TIDICHI
DVMS chuyên:
- Tư vấn, xây dựng, chuyển giao công nghệ Blockchain, mạng xã hội,...
- Tư vấn ứng dụng cho smartphone và máy tính bảng, tư vấn ứng dụng vận tải thông minh, thực tế ảo, game mobile,...
- Tư vấn các hệ thống theo mô hình kinh tế chia sẻ như Uber, Grab, ứng dụng giúp việc,...
- Xây dựng các giải pháp quản lý vận tải, quản lý xe công vụ, quản lý xe doanh nghiệp, phần mềm và ứng dụng logistics, kho vận, vé xe điện tử,...
- Tư vấn và xây dựng mạng xã hội, tư vấn giải pháp CNTT cho doanh nghiệp, startup,...
Vì sao chọn DVMS?
- DVMS nắm vững nhiều công nghệ phần mềm, mạng và viễn thông. Như Payment gateway, SMS gateway, GIS, VOIP, iOS, Android, Blackberry, Windows Phone, cloud computing,…
- DVMS có kinh nghiệm triển khai các hệ thống trên các nền tảng điện toán đám mây nổi tiếng như Google, Amazon, Microsoft,…
- DVMS có kinh nghiệm thực tế tư vấn, xây dựng, triển khai, chuyển giao, gia công các giải pháp phần mềm cho khách hàng Việt Nam, USA, Singapore, Germany, France, các tập đoàn của nước ngoài tại Việt Nam,…
Quý khách xem Hồ sơ năng lực của DVMS tại đây >>
Quý khách gửi yêu cầu tư vấn và báo giá tại đây >>