SERIES
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.
Tour cơ bản về design pattern trong C# / .NET 10: chúng là gì, khi nào dùng, và cách đọc 23 mẫu GoF kinh điển mà không bị ngợp thuật ngữ.
Chọn design pattern đúng trong C# / .NET 10 bằng cách khớp triệu chứng với ý đồ: cây quyết định qua cả 23 pattern GoF với link chéo.
Tổng kết series Design Patterns A → Z trong C# / .NET 10: năm bài học sống sót, đọc gì tiếp, và mỗi pattern teo lại ra sao trong code hiện đại.
Dùng Singleton pattern đúng cách trong C# / .NET 10: thread-safe với Lazy<T>, vì sao AddSingleton<T> thường thay thế nó, và khi nào vẫn cần tự viết tay.
Factory Method pattern trong C# / .NET 10: khi switch ladder phình ra mất kiểm soát, khi keyed DI thay thế bản GoF, và khi vẫn cần cả hai.
Abstract Factory pattern trong C# / .NET 10: tạo một họ sản phẩm liên quan biến đổi cùng nhau (UI kit US vs EU) và cách DI thay thế factory tay.
Builder pattern trong C# / .NET 10: khi record và with-expression là đủ, khi vẫn cần fluent builder class, và cách thiết kế builder co giãn được.
Prototype pattern trong C# / .NET 10: clone object có sẵn bằng record with, vì sao ICloneable hỏng, và khi nào vẫn cần method Clone tường minh.
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.
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.
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.
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.
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.
Flyweight pattern trong C# / .NET 10: share instance immutable để cắt allocation trên hot path, từ string interning tới cache product badge.
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.
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.
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.
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.
Iterator pattern trong C# / .NET 10: yield return và IEnumerable chính là pattern này, và khi IAsyncEnumerable cho stream data remote lazy.
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.
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.
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.
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.
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.
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ế.
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.