- [C#] Di chuyển và thay đổi kích thước Control Winform khi ứng dụng đang chạy
- [VB.NET] Chia sẻ source tạo sắp xếp đội hình bóng đá Line-ups đội bóng
- [C#] Hướng dẫn chỉnh sửa Text của label trực tiếp trên winform
- [C#] Hướng dẫn custom TextBox giống Ultraviewer trên Winform
- [C#] Show Modal Winform like Bootstrap
- [DATABASE] Thứ tự thực hiện mệnh đề truy vấn SELECT trong Sqlserver
- [C#] Hướng dẫn viết addin Excel Lấy hình ảnh từ URL internet vào Excel
- [DATABASE] TSQL view max length all column data trên table Sqlserver
- [DEVEXPRESS] Hướng dẫn sử dụng MailMerge kèm Hình ảnh trên Winform
- [DATABASE] Hướng dẫn truy vấn xem kích thước lưu trữ của từng bảng ghi Table trên sqlserver
- [C#] Hướng dẫn Fake Date Time sử dụng thư viện Harmony
- [DATABASE] Phân biệt câu lệnh DDL và DML trong sqlserver
- [C#] Hướng dẫn convert file mã HTML sang file Pdf trên winform
- [DEVEXPRESS] Tạo các loại mã vạch Barcode trực tiếp trên Devexpress Barcode API
- [DEVEXPRESS] Hướng dẫn custom Simple button thành Progressbar
- [DATABASE] Tách số và chữ từ chuỗi - hàm tối ưu hóa tách số và chữ trong Sqlserver
- [C#] Tìm kiếm gần đúng Full Text Search sử dụng thư viện Lucene.NET
- [C#] Chia sẻ tài liệu, sdk và source code máy chấm công dòng máy ZKTeco
- [C#] Memory Cache là gì, và sử dụng trong ứng dụng Winform
- [DATABASE] Khóa chính Primary Key trong Sqlserver
[C#] Hướng dẫn sử dụng Fluent Interface Design Pattern
Xin chào các bạn, bài viết hôm nay mình sẻ nói về Fluent Interface design pattern trong lập trình C#, Winform.
[C#] Using Fluent Interface Design Pattern
Vậy Fluent Interface là gì?
Fluent interface được đặt ra bởi Eric Evans và Martin Fowler, là sự mở rộng của kỹ thuật “Lời gọi theo chuỗi” (method chaining) nhằm làm cho mã lập trình dễ đọc hơn.
Method chaining là một kỹ thuật về cú pháp chung cho cách gọi nhiều lần tới các hàm khác trong lập trình hướng đối tượng.
Các bạn nào thường sử dụng Linq sẽ thấy cấu trúc giống như vậy.
Để dễ hiểu các bạn như code bên dưới:
var student = new FluentStudent()
.Name("Nguyễn Phương Nhi")
.Age(1)
.Address("Kiên Giang")
.Gender("Nữ")
.DateOfBirth(Convert.ToDateTime("11/08/2020"));
student.ShowInfo();
Cách để build một object giống code trên gọi là Fluent Design Interface.
Ví dụ: Đầu tiên các bạn tạo một class Student
public class Student
{
public string Name { set; get; }
public string Address { set; get; }
public string Gender { set; get; }
public int Age { set; get; }
public DateTime DateofBirth { set; get; }
}
Thông thường khi các bạn Tạo mới một đối tượng và Set thuộc tính cho đối tượng.
var student1 = new Student();
student1.Name = "Nguyễn Thảo";
student1.Address = "Vũng Tàu";
student1.Gender = "Nam";
student1.Age = 31;
student1.DateofBirth = Convert.ToDateTime("28/03/1988");
Để sử dụng Fluent Interface thì chúng ta viết các phương thức để set thuộc tính cho class đó và Return this.
Bây giờ chúng ta sẽ tạo một class FluentStudent như sau:
public class FluentStudent
{
private Student student = new Student();
public FluentStudent Name(string Name)
{
student.Name = Name;
return this;
}
public FluentStudent Address(string Address)
{
student.Address = Address;
return this;
}
public FluentStudent Gender(string Gender)
{
student.Gender = Gender;
return this;
}
public FluentStudent Age(int Age)
{
student.Age = Age;
return this;
}
public FluentStudent DateOfBirth(DateTime DateOfBirth)
{
student.DateofBirth = DateOfBirth;
return this;
}
public void ShowInfo()
{
Console.WriteLine("=========================================");
Console.WriteLine($"Name: {student.Name}");
Console.WriteLine($"Address: {student.Address}");
Console.WriteLine($"Gender: {student.Gender}");
Console.WriteLine($"Age: {student.Age}");
Console.WriteLine($"DateofBirth: {student.DateofBirth}");
Console.WriteLine("=========================================");
}
}
Và bây giờ chúng ta tạo đối tượng sử dụng như sau:
var student2 = new FluentStudent()
.Name("Nguyễn Phương Nhi")
.Age(1)
.Address("Kiên Giang")
.Gender("Nữ")
.DateOfBirth(Convert.ToDateTime("11/08/2020"));
student2.ShowInfo();
Thanks for watching!