# Mẫu thiết kế được hiện thực bằng Java

# Giới thiệu

Mẫu thiết kế là phương pháp tốt nhất, được chuẩn hóa mà một lập trình viên có thể sử dụng để giải quyết các vấn đề chung khi thiết kế một ứng dụng hoặc hệ thống.

Mẫu thiết kế có thể đẩy nhanh quá trình phát triển bằng cách cung cấp các mô hình đã được kiểm nghiệm, chứng minh.

Việc sử dụng lại các mẫu thiết kế giúp phòng ngừa các vấn đề tiềm ẩn có thể xảy ra và nó cũng cải thiện khả năng đọc hiểu mã nguồn cho các lập trình viên và người thiết kế hệ thống đã quen thuộc với các mẫu đó.

# Mở đầu

Trang web này giới thiệu các mẫu thiết kế được hiện thực bằng Java. Các giải pháp này đã được phát triển
bởi các lập trình viên và người thiết kế có kinh nghiệm từ cộng đồng mã nguồn mở.
Bạn có thể tham khảo các mẫu thông qua mô tả cấp cao hoặc mã nguồn của chúng. 
Các mã nguồn mẫu được giải thích đầy đủ và được coi là hướng dẫn trực quan về cách triển khai một mẫu thiết kế cụ thể. 
Chúng tôi cũng sử dụng các công nghệ Java nguồn mở đã được chứng minh thực chiến phổ biến nhất.

Trước khi đào sâu vào tài liệu, bạn nên làm quen với những
[quy tắc thiết kế](https://java-design-patterns.com/principles/).

Tất cả các thiết kế nên đơn giản nhất có thể. 
Bạn nên bắt đầu với KISS, YAGNI, và Làm-Thứ-Đơn-Giản-Nhất-Mà-Giải-Quyết-Vấn-Đề (Do-The-Simplest-Thing-That-Could-Possibly-Work).
Sự phức tạp và các mẫu chỉ được thêm vào khi chúng thực sự cần cho sự mở rộng về sau.

Một khi đã quen với các khái niệm, bạn có thể bắt đầu đào sâu
[các mẫu thiết kế hiện có](https://java-design-patterns.com/patterns/)
bằng các cách tiếp cận sau

 - Tìm kiếm một mẫu thiết kế cụ thể bằng tên. Nếu không tìm thấy, vui lòng yêu cầu một mẫu mới [ở đây](https://github.com/iluwatar/java-design-patterns/issues).
 - Sử dụng đánh dấu (tag) như `Performance`, `Gang of Four` hoặc `Data access`.
 - Sử dụng danh mục như `Creational`, `Behavioral`, vân vân.

Mong rằng những giải pháp hướng đối tượng ở đây sẽ mang lại lợi ích công việc cũng như niềm vui học tập cho bạn, giống như chúng tôi đã và đang được trải nghiệm trong quá trình phát triển chúng.

# Đóng góp

Nếu bạn mong muốn đóng góp cho dự án, bạn có thể tìm kiếm thông tin liên quan ở [wiki cho nhà phát triển](https://github.com/iluwatar/java-design-patterns/wiki).
Chúng tôi sẽ giúp trả lời câu hỏi của bạn ở [Gitter](https://gitter.im/iluwatar/java-design-patterns).

# Giấy phép

Dự án này được cấp phép theo các điều khoản của giấy phép MIT.
