SERIES

Design Patterns từ A → Z trong C# / .NET

Hướng dẫn thực dụng về 23 design pattern Gang of Four cho lập trình viên C#. Mỗi chương bắt đầu từ một triệu chứng thật trong code, đi qua hình dạng giáo khoa, rồi chỉ ra cách .NET 10 hiện đại làm gọn lại — record, dependency injection, pattern matching, và những thư viện đã cài sẵn phần lớn. Mở một chương khi bạn có bài toán trước mặt, hoặc đọc tuần tự để nắm cả bản đồ. Có bản tiếng Anh và tiếng Việt.

26 bài · 4 nhóm · C# / .NET 10 · Anh / Việt

Tổng quan (3)

Nhóm Khởi tạo (5)

Nhóm Cấu trúc (7)

06
Adapter Pattern trong C#: Khớp API Lạ Vào Code Của Bạn

Adapter pattern trong C# / .NET 10: bọc lệnh gọi SDK legacy vào interface của bạn — sync sang async, snake_case sang PascalCase, exception sang Result.

Cơ bản 7 phút đọc
07
Bridge Pattern trong C#: Chặn Cơn Bùng Nổ Class 3x3

Bridge pattern trong C# / .NET 10: tách abstraction (style notification) khỏi implementation (channel gửi) để giữ N+M class thay vì N*M.

Nâng cao 8 phút đọc
08
Composite Pattern trong C#: Cây Với Thao Tác Đồng Nhất

Composite pattern trong C# / .NET 10: interface dùng chung cho leaf và group để total, render, validate hoạt động giống nhau ở mọi tầng cây.

Trung bình 8 phút đọc
09
Decorator Pattern trong C#: Wrapper Log, Retry, Cache

Decorator pattern trong C# / .NET 10: bọc service với log, retry, cache mà không sửa nó, và cách Scrutor Decorate tự động hóa registration.

Trung bình 8 phút đọc
10
Facade Pattern trong C#: Một Service Gói Nhiều Subsystem

Facade pattern trong C# / .NET 10: gập sáu inject vào một application service fan ra, không để class bên trong rò ngược ra caller.

Cơ bản 7 phút đọc
11
Flyweight Pattern trong C#: Share Instance Immutable Tỉnh Táo

Flyweight pattern trong C# / .NET 10: share instance immutable để cắt allocation trên hot path, từ string interning tới cache product badge.

Nâng cao 7 phút đọc
12
Proxy Pattern trong C#: Lazy Load, Phân Quyền, Stub Remote

Proxy pattern trong C# / .NET 10: lazy-load qua EF Core proxy, thêm phân quyền quanh service, và nhận diện gRPC client là remote proxy.

Trung bình 8 phút đọc

Nhóm Hành vi (11)

13
Chain of Responsibility trong C#: Pipeline và Middleware

Chain of Responsibility trong C# / .NET 10: dựng pipeline validation kiểu ASP.NET Core middleware, với handler có thể forward hoặc dừng chuỗi.

Trung bình 6 phút đọc
14
Command Pattern trong C#: Record, Handler, và Undo

Command pattern trong C# / .NET 10: đóng gói request thành record, dispatch tới handler, và cách MediatR là pattern này ship dạng NuGet.

Trung bình 7 phút đọc
15
Interpreter Pattern trong C#: Khi Nào và Cách Dựng DSL

Interpreter pattern trong C# / .NET 10: dựng DSL nhỏ cho rule discount, khi Expression tree thắng interpreter tay, và khi không cần cả hai.

Nâng cao 7 phút đọc
16
Iterator Pattern trong C#: yield, IEnumerable, IAsyncEnumerable

Iterator pattern trong C# / .NET 10: yield return và IEnumerable chính là pattern này, và khi IAsyncEnumerable cho stream data remote lazy.

Cơ bản 6 phút đọc
17
Mediator Pattern trong C#: MediatR Notification và Hub

Mediator pattern trong C# / .NET 10: nhiều peer publish vào hub trung tâm thay vì gọi nhau trực tiếp, với MediatR notification là cài đặt chuẩn de facto.

Trung bình 6 phút đọc
18
Memento Pattern trong C#: Snapshot Cho Undo và Rollback

Memento pattern trong C# / .NET 10: capture state thành snapshot immutable cho undo, rollback transactional, và time-travel debug bằng record và with.

Trung bình 7 phút đọc
19
Observer Pattern trong C#: Event và IObservable

Observer pattern trong C# / .NET 10: thông báo subscriber khi state đổi qua event, IObservable, INotifyPropertyChanged, hay Channel — chọn đúng cái cho case.

Cơ bản 6 phút đọc
20
State Pattern trong C#: Vòng Đời Order với Stateless

State pattern trong C# / .NET 10: mô hình vòng đời order thành state với transition cho phép, dùng pattern matching hoặc thư viện Stateless.

Trung bình 7 phút đọc
21
Strategy Pattern trong C#: Func, DI, hay Interface?

Strategy pattern trong C# / .NET 10: khi Func delegate là đủ, khi interface inject xứng đáng, và Strategy khác State và Command thế nào.

Cơ bản 7 phút đọc
22
Template Method trong C#: Hook Thừa Kế vs Strategy

Template Method pattern trong C# / .NET 10: khi base abstract với hook đúng, khi Strategy inject thắng, và cách tránh lock-in thừa kế.

Cơ bản 8 phút đọc
23
Visitor Pattern trong C#: switch Expression và Double Dispatch

Visitor pattern trong C# / .NET 10: khi switch expression với pattern matching thắng hierarchy double-dispatch GoF, và khi Visitor cổ điển còn thắng.

Nâng cao 8 phút đọc