Design pattern trong Java, mô hình UML và code ví dụ

Nguồn: https://stackjava.com/design-pattern/design-pattern-la-gi-design-pattern-trong-java.html

1. Design Pattern là gì?

Trong kỹ thuật phần mềm, design pattern (mẫu thiết kế) là một giải pháp lặp lại nói chung cho một vấn đề thường xảy ra trong thiết kế phần mềm.

Một mẫu thiết kế không phải là một ngôn ngữ hay thiết kế hoàn chỉnh có thể được chuyển trực tiếp thành mã. Nó là một mô tả hoặc mẫu cho cách giải quyết vấn đề có thể được sử dụng trong nhiều tình huống khác nhau.

Design pattern rất phổ biến trong phát triển phần mềm, nó được áp dụng sẵn trong các Framework, các thư viện, và nếu trước đó bạn chưa biết khái niệm design pattern là gì thì rất có thể bạn đã áp dụng nó rồi nhưng không nhận ra đó thôi!

2. Lợi ích của Design Pattern (Mẫu thiết kế).

Một số lợi ích của việc sử dụng các mẫu thiết kế là:

Các mẫu thiết kế đã được xác định và cung cấp cách tiếp cận chuẩn theo ngành để giải quyết vấn đề lặp lại, vì vậy sẽ tiết kiệm được thời gian nếu chúng ta sử dụng mẫu thiết kế hợp lý. Sử dụng các mẫu thiết kế thúc đẩy khả năng tái sử dụng dẫn đến phát triển phần mềm nhanh hơn. Nó giúp giảm tổng chi phí của sản phẩm phần mềm. Khi áp dụng 1 mẫu thiết kế, nó làm cho code dễ hiểu và gỡ lỗi. Ví dụ: khi xây nhà thì người ta sẽ áp dụng những bộ khung (nhà ống, nhà vuông…) để dễ xây, tiết kiệm, phù hợp phong thủy… Thì khi làm phần mềm người ta sẽ xem yêu cầu để áp dụng những mẫu đã dùng trước đó xem có cái nào phù hợp không, vì dựa trên những mẫu cũ ta đã có được những kinh nghiệm để làm phần mềm nhanh hơn, dễ mở rộng, bảo trì hơn.

3. Các loại Design Pattern

Design Pattern được chia làm 3 loại là mẫu tạo dựng, mẫu cấu trúc, mẫu hành vi.

Ở bài này mình sẽ liệt kê những mẫu hay dùng nhất và code ví dụ nó bằng Java.

Mẫu tạo dựng (Creational Design Patterns)

Các mẫu tạo dựng cung cấp giải pháp tạo một đối tượng theo cách tốt nhất phù hợp cho từng tính huống, bao gồm: Singleton Pattern Factory Pattern Abstract Factory Pattern Builder Pattern Prototype Pattern

Mẫu cấu trúc (Structural Design Patterns)

Mẫu cấu trúc cung cấp các giải pháp tạo ra cấu trúc của một lớp (class), ví dụ dùng thừa kế để tạo một class lớn từ các class bé, bao gồm: Adapter Pattern Composite Pattern Proxy Pattern Flyweight Pattern Facade Pattern Bridge Pattern Decorator Pattern

Mẫu hành vi (Behavioral Design Patterns)

Các mẫu hành vi cung cấp các giải pháp cho sự tương tác giữa các class, làm sao để lose couple, high cohension, tăng tính mở rộng. Bao gồm:

Template Method Pattern Mediator Pattern Chain of Responsibility Pattern Observer Pattern Strategy Pattern Command Pattern State Pattern Visitor Pattern Interpreter Pattern Iterator Pattern Memento Pattern

Một số mẫu thiết kế khác:

Dependency Injection Thread Safety in Java Singleton