---
title: "Design Pattern là gì? 23 Classic Design Pattern với Golang"
description: "Các video trong series 23 Classic Design Pattern with Golang sẽ cung cấp những góc nhìn và ứng dụng thực tế cho các bạn."
canonical: "https://200lab.io/blog/series-23-classic-design-pattern"
published: "2024-08-21T08:30:00Z"
updated: "2026-08-21T07:17:37Z"
authors: ["Việt Trần"]
tags: ["Golang"]
reading_minutes: 2
access: "public"
---

Như các bạn cũng biết thì Design Pattern rất quan trọng trong thiết kế phần mềm và hệ thống. Hiện nay có rất nhiều video, bài viết về nội dung Design Pattern và họ đã làm rất tốt từ nước ngoài đến cả Việt Nam.

Vì thế, **200Lab** mong những video trong series** 23 Classic Design Pattern with Golang **sẽ cung cấp thêm những góc nhìn và ứng dụng thực tế cho các bạn, đặc biệt là đối với ngôn ngữ Golang. Có rất nhiều loại Design Pattern tương ứng theo từng ngôn ngữ, từng framework hoặc các stack công nghệ mà các bạn đang sử dụng.

Series bài viết dưới đây chỉ giới thiệu **23 Design Pattern** cổ điển và phổ biến nhất. Dù chúng được thiết kế cho ngôn ngữ hướng đối tượng tuy nhiên các bạn vẫn có thể sử dụng được cho hầu hết các ngôn ngữ lập trình khác.

## 1. Design Pattern là gì? Vì sao cần biết Design Pattern

[youtube: https://www.youtube.com/embed/-eHfGiq9plg?list=PLOsM_3jFFQRmNCt68hxCdxi8i_fUx2wTZ](https://www.youtube.com/embed/-eHfGiq9plg?list=PLOsM_3jFFQRmNCt68hxCdxi8i_fUx2wTZ)

## 2. Danh sách Classic Design Pattern

### 2.1 Strategy Pattern

[youtube: https://www.youtube.com/embed/7yOORwOx5V8?list=PLOsM_3jFFQRmNCt68hxCdxi8i_fUx2wTZ](https://www.youtube.com/embed/7yOORwOx5V8?list=PLOsM_3jFFQRmNCt68hxCdxi8i_fUx2wTZ)

### 2.3 Design Pattern with Go - Factory Method pattern

[youtube: https://www.youtube.com/embed/qb55A2yL48g?list=PLOsM_3jFFQRmNCt68hxCdxi8i_fUx2wTZ](https://www.youtube.com/embed/qb55A2yL48g?list=PLOsM_3jFFQRmNCt68hxCdxi8i_fUx2wTZ)

### 2.4 Abstract Factory Pattern

[youtube: https://www.youtube.com/embed/huO5bL98vIU?list=PLOsM_3jFFQRmNCt68hxCdxi8i_fUx2wTZ](https://www.youtube.com/embed/huO5bL98vIU?list=PLOsM_3jFFQRmNCt68hxCdxi8i_fUx2wTZ)

### 2.5 Flyweight Pattern

[youtube: https://www.youtube.com/embed/I611baCpNUw?list=PLOsM_3jFFQRmNCt68hxCdxi8i_fUx2wTZ](https://www.youtube.com/embed/I611baCpNUw?list=PLOsM_3jFFQRmNCt68hxCdxi8i_fUx2wTZ)

### 2.6 Composite Pattern

[youtube: https://www.youtube.com/embed/1rmXdQvSg68?list=PLOsM_3jFFQRmNCt68hxCdxi8i_fUx2wTZ](https://www.youtube.com/embed/1rmXdQvSg68?list=PLOsM_3jFFQRmNCt68hxCdxi8i_fUx2wTZ)

### 2.7 Decorator Pattern

[youtube: https://www.youtube.com/embed/G_KHJZE87mM?list=PLOsM_3jFFQRmNCt68hxCdxi8i_fUx2wTZ](https://www.youtube.com/embed/G_KHJZE87mM?list=PLOsM_3jFFQRmNCt68hxCdxi8i_fUx2wTZ)

### 2.8 Chain of Responsibility Pattern

[youtube: https://www.youtube.com/embed/Bvb6FF7US3o?list=PLOsM_3jFFQRmNCt68hxCdxi8i_fUx2wTZ](https://www.youtube.com/embed/Bvb6FF7US3o?list=PLOsM_3jFFQRmNCt68hxCdxi8i_fUx2wTZ)

### 2.9 Singleton Pattern

[youtube: https://www.youtube.com/embed/YfQK09FSRdk?list=PLOsM_3jFFQRmNCt68hxCdxi8i_fUx2wTZ](https://www.youtube.com/embed/YfQK09FSRdk?list=PLOsM_3jFFQRmNCt68hxCdxi8i_fUx2wTZ)

### 2.10 Facade Pattern

[youtube: https://www.youtube.com/embed/GdVWMZHy3ts?list=PLOsM_3jFFQRmNCt68hxCdxi8i_fUx2wTZ](https://www.youtube.com/embed/GdVWMZHy3ts?list=PLOsM_3jFFQRmNCt68hxCdxi8i_fUx2wTZ)

### 2.11 Prototype Pattern

[youtube: https://www.youtube.com/embed/uEGgFgc1uMQ?list=PLOsM_3jFFQRmNCt68hxCdxi8i_fUx2wTZ](https://www.youtube.com/embed/uEGgFgc1uMQ?list=PLOsM_3jFFQRmNCt68hxCdxi8i_fUx2wTZ)

### 2.12 Builder Pattern

[youtube: https://www.youtube.com/embed/elcWiU0s0L4?list=PLOsM_3jFFQRmNCt68hxCdxi8i_fUx2wTZ](https://www.youtube.com/embed/elcWiU0s0L4?list=PLOsM_3jFFQRmNCt68hxCdxi8i_fUx2wTZ)

### 2.13 Iterator Pattern

[youtube: https://www.youtube.com/embed/qNXyRqsW2mQ?list=PLOsM_3jFFQRmNCt68hxCdxi8i_fUx2wTZ](https://www.youtube.com/embed/qNXyRqsW2mQ?list=PLOsM_3jFFQRmNCt68hxCdxi8i_fUx2wTZ)

### 2.14 Option function Pattern

[youtube: https://www.youtube.com/embed/8_S1_KiF__4?list=PLOsM_3jFFQRmNCt68hxCdxi8i_fUx2wTZ](https://www.youtube.com/embed/8_S1_KiF__4?list=PLOsM_3jFFQRmNCt68hxCdxi8i_fUx2wTZ)

### 2.15 Bridge Pattern

[youtube: https://www.youtube.com/embed/zL8si2d3FUs?list=PLOsM_3jFFQRmNCt68hxCdxi8i_fUx2wTZ](https://www.youtube.com/embed/zL8si2d3FUs?list=PLOsM_3jFFQRmNCt68hxCdxi8i_fUx2wTZ)

### 2.16 Adapter Pattern

[youtube: https://www.youtube.com/embed/KMR1dGqLSBo?list=PLOsM_3jFFQRmNCt68hxCdxi8i_fUx2wTZ](https://www.youtube.com/embed/KMR1dGqLSBo?list=PLOsM_3jFFQRmNCt68hxCdxi8i_fUx2wTZ)

### 2.17 Memento Pattern

[youtube: https://www.youtube.com/embed/lvxfZIGrOG4?list=UULF9stq0QitmONxnXBxPDUJTg](https://www.youtube.com/embed/lvxfZIGrOG4?list=UULF9stq0QitmONxnXBxPDUJTg)

### 2.18 Command Pattern

[youtube: https://www.youtube.com/embed/4-UjEtJutXE?list=UULF9stq0QitmONxnXBxPDUJTg](https://www.youtube.com/embed/4-UjEtJutXE?list=UULF9stq0QitmONxnXBxPDUJTg)

### 2.19 State Pattern

[youtube: https://www.youtube.com/embed/Oy1MNhq2y_k?list=UULF9stq0QitmONxnXBxPDUJTg](https://www.youtube.com/embed/Oy1MNhq2y_k?list=UULF9stq0QitmONxnXBxPDUJTg)

### 2.20 Observer Pattern

[youtube: https://www.youtube.com/embed/c1Tze42WqLg?list=UULF9stq0QitmONxnXBxPDUJTg](https://www.youtube.com/embed/c1Tze42WqLg?list=UULF9stq0QitmONxnXBxPDUJTg)

### 2.21 Proxy Pattern

[youtube: https://www.youtube.com/embed/WPDn_szsQ0o?list=UULF9stq0QitmONxnXBxPDUJTg](https://www.youtube.com/embed/WPDn_szsQ0o?list=UULF9stq0QitmONxnXBxPDUJTg)

### 2.22 Template Method Pattern

[youtube: https://www.youtube.com/embed/nWVDoeO1MYw?list=UULF9stq0QitmONxnXBxPDUJTg](https://www.youtube.com/embed/nWVDoeO1MYw?list=UULF9stq0QitmONxnXBxPDUJTg)

### 2.23 Visitor Pattern

[youtube: https://www.youtube.com/embed/m-iAQXrXrnI?list=UULF9stq0QitmONxnXBxPDUJTg](https://www.youtube.com/embed/m-iAQXrXrnI?list=UULF9stq0QitmONxnXBxPDUJTg)

### 2.24 Interpreter Pattern

[youtube: https://www.youtube.com/embed/TWZTvtUiYjo?list=UULF9stq0QitmONxnXBxPDUJTg](https://www.youtube.com/embed/TWZTvtUiYjo?list=UULF9stq0QitmONxnXBxPDUJTg)

### 2.25 Mediator Pattern

[youtube: https://www.youtube.com/embed/-DT4Dzv0FIY?list=UULF9stq0QitmONxnXBxPDUJTg](https://www.youtube.com/embed/-DT4Dzv0FIY?list=UULF9stq0QitmONxnXBxPDUJTg)

## 3. Kết luận

200Lab hy vọng, series 23 Classic Design Pattern with Golang đã giúp bạn có thêm được những góc nhìn mới về Design Pattern.

Và nếu bạn cảm thấy khó khăn trong việc tự học. Thậm chí đã làm được những service cơ bản nhưng vẫn chưa tự tin cho những phần nâng cao thì có thể tham khảo [khoá học Golang for Scalable Backend](<https://200lab.io/khoa-hoc/khoa-hoc-golang-food-delivery-backend>) tại **200Lab** nhé!

Tham khảo thêm:

- [Lập trình REST API TODO List với Golang](</blog/lap-trinh-rest-api-todo-list-voi-golang>)
- [gRPC là gì? Vũ khí tối thượng tăng tải Microservices](</blog/grpc-la-gi>)
- [Ứng dụng Clean Architecture](</blog/ung-dung-clean-architecture-service-golang-rest-api>) cho service Golang REST API
- [OOP là gì? Chi tiết về lập trình hướng đối tượng](</blog/oop-la-gi>)

## Đọc thêm

- [Concurrency pattern trong Go - Phần 2](https://200lab.io/blog/concurrency-pattern-trong-go.md): Ở phần này, chúng ta sẽ tìm hiểu tiếp 3 pattern quan trọng khác, bao gồm: or channel, xử lý lỗi và pipeline.
- [Concurrency pattern trong Golang - Phần 1](https://200lab.io/blog/concurrent-pattern-trong-golang.md): Trong lập trình Go, concurrency pattern là những kỹ thuật thiết kế giúp quản lý và tổ chức code cho các tác vụ chạy đồng thời, tận dụng tối đa khả năng xử lý đồng thời của hệ thống.
- [So sánh Golang và NodeJS chi tiết](https://200lab.io/blog/so-sanh-golang-vs-nodejs.md): Golang và NodeJS khác nhau như thế nào? Golang và Nodejs từ lâu đã trở thành chủ đề sôi nổi. Nodejs đã chiếm ưu thế trong một khoảng thời gian dài. Golang liệu có đủ sức thuyết phục để chuyển đổi?
- [Buffered Channel là gì? Thường xuyên hỏi trong phỏng vấn Golang Dev](https://200lab.io/blog/buffered-channel-la-gi-so-sanh-buffered-va-unbuffered-channel.md): Buffered Channel là một channel trong Golang có khả năng lưu trữ được dữ liệu bên trong nó. Khả năng này được gọi là sức chứa (capacity).
- [Golang Channel là gì? Các ứng dụng Channel trong Golang](https://200lab.io/blog/golang-channel-la-gi.md): Channel là kênh giao tiếp trung gian giữa các Goroutines có thể gởi và nhận dữ liệu cho nhau một cách an toàn thông qua cơ chế lock-free.
- [Mọi bài viết chủ đề Golang](https://200lab.io/blog/tags/golang.md)

Toàn bộ nội dung: https://200lab.io/llms.txt
