Prototype

Dẫn nhập thực tế: Zin là cậu bé thích tô tượng =)) Cậu được bố cung cấp 1 loạt thú tượng. Sau 1 một thời gian cậu đi bán cho bạn bè những thú đã tô và nhận thấy thị trường sở hữu thú tượng rất lớn. Nên cậu muốn mở rộng thị trường. Có 3 mẫu màu được yêu thích là Xanh lá cây, … Continue reading Prototype

Factory Method

Dẫn nhập thực tế: Mỗi gia đình đều có sở thích nuôi thú cưng khác nhau. Có nhà thì nuôi mèo, có nhà thì nuôi chó. Nếu đưa bài toán này vào lập trình, chúng ta sẽ có các đối tượng: Lớp Family Family cung cấp thông tin về Pet: GetMyPet() FamilyHaveDog, FamilyHaveCat kế thừa từ Family Lớp Pet Pet cung cấp thông tin GetInforPet() Dog, … Continue reading Factory Method

Builder

Dẫn nhập tình huống thực tế: Trong ví dụ này, chúng ta hãy có một cửa hàng có nhiều loại xe (Verhicle). Nhưng Verhical lại có nhiều biến thể khác nhau: xe Scooter, xe máy, xe oto,… Có một số bước cần được theo dõi trước khi nhận được sản phẩm cuối cùng như: thêm bánh xe ( wheel) , sau đó thêm khung xe (body), … Continue reading Builder

Abstract Factory

Dẫn nhập tình huống thực tế: Chúng ta hãy xem xét thực tế các loại động vật trên hai châu lục: châu Úc và châu Phi. Sẽ có 2 loại động vật chính ở mỗi châu lục: Carnivore (Động vật ăn thịt) Herbivore (Động vật ăn cỏ) Như hình mô tả, ở mỗi châu lục chúng ta lại có mỗi loại động vật thuộc Carnivore hoặc Herbivore … Continue reading Abstract Factory

Giới thiệu Design Patterns

  1. Design Patterns là gì? Design patterns là một kỹ thuật trong lập trình hướng đối tượng, được các nhà nghiên cứu đúc kết và tạo ra các mẫu thiết kế chuẩn. Và design pattern không phải là một ngôn ngữ lập trình cụ thể nào cả, mà nó có thể sự dụng được trong hầu hết các ngôn lập trình có hỗ trợ OOP hiện nay. Hệ thống … Continue reading Giới thiệu Design Patterns

Command Query Responsibility Segregation (CQRS)

Originally posted on Craftsmanship:
Với một ứng dụng kiểu data-centric application (ứng dụng tập trung vào dữ liệu) chỉ implement các thao tác CRUD căn bản xuống DB và để business process cho user xử lý (ví dụ như cần change data nào và khi nào change), nó có lợi điểm là user có thể thay đổi business process mà application không cần phải thay… Continue reading Command Query Responsibility Segregation (CQRS)

Nullable trong C#

C# cung cấp một kiểu dữ liệu đặc biệt, kiểu nullable, từ đó bạn có thể gán dãy các giá trị thông thường cũng như các giá trị null trong C#.   Việc tạo các kiểu Nullable: Một kiểu nullable có thể hiểu như là một giá trị null có thể được gán cho các biến có kiểu giá trị. Nó chỉ định là một biến … Continue reading Nullable trong C#

Interface trong C#

  Dẫn nhập Iphone, Laptop, FingerprintScanner đều là những thứ có thể truy cập được bằng vân tay nhưng chúng thực hiện theo những cách khác nhau. Những lớp này có chung một hành động tạm gọi là định danh bằng sinh trắc học – BiometricAuth(). Nếu ta cố gắng gộp cả 3 lớp này vào thành 1 lớp chung sẽ không hay vì rất khó … Continue reading Interface trong C#