Mục lục
Interpreter Design Pattern cung cấp một cách để đánh giá về ngữ pháp hoặc cách diễn giải của ngôn ngữ. Loại pattern này được sử dụng trong phân tích cú pháp SQL, công cụ xử lý ký hiệu, ... .
Để hiểu rõ hơn về đinh nghĩa trên, các bạn hãy xem qua ví dụ dưới đây.
Như các bạn thấy ở hình trên, chúng ta có Current Date (ngày hiện tại) là ngày 18-06-2022. Với ngày hiện tại này, ta có thể diễn đạt dưới nhiều dạng biểu thức khác nhau như: MM-DD-YYYY, DD-MM-YYYY, ... .
Giả sử, chúng ta muốn ngày ở định dạng MM-DD-YYY thì việc cần làm là chuyển giá trị và biểu thức ngày bạn muốn (tức MM-DD-YYYY) cho trình thông dịch. Những gì trình thông dịch sẽ làm là chuyển đổi giá trị thành định dạng bạn vừa chuyển cho nó.
Trong phần này mình sẽ thực hiện triển khai Interpreter Design Pattern trong C# thông qua một ví dụ cụ thể. Các bạn hãy cùng mình thực hiện theo từng bước nhé.
Bước 1: Tạo class Context.
Trong class này chưa ngày (tức là ngày - giờ hiện tại) mà chúng ta muốn diễn giải.
Context.cs
|
Bước 2: Tạo interface AbstractExpression.
Class này xác định phương thức sẽ được thực hiện bởi các class con. Hơn nữa, phương thức lấy đối tượng Context làm đối số. Đối tượng Context này giữ giá trị mà chúng ta muốn diễn giải.
AbstractExpression.cs
|
Bước 3: Tạo lần lượt các class DayExpression, MonthExpression, YearExpression, SeparatorExpression.
Đây sẽ là các class triển khai interface AbstractExpression.
DayExpression.cs
|
MonthExpression.cs
|
YearExpression.cs
|
SeparatorExpression.cs
|
Bước 4: Tạo client.
Trong phần này chúng ta yêu cầu người dùng chọn định dạng ngày và sau đó sẽ hiện thị ngày dưới định dạng đó.
Program.cs
|
Kết quả:
Về bài trước... |
Bài tiếp theo... |
Cờ caro |
Butterfly |
Lật hình (luyện trí nhớ) |
Cờ tướng ONLINE |
Xếp hình |
Ghép hình |
15_PUZZLE |
Kill ghosts |
Banchim |
Planet Defense |
Tower game |
Tower game |
Plapy Bird (NH.Đông) |
Vượt chướng ngại vật |
+ Lê Văn Thuyên-0379136392:Cảm ơn quý vị và các bạn đã vào Website của Lê Thuyên! Lê thuyên rất mong nhận được sự góp ý của quý vị và các bạn cho sự phát triển của website này. Xin chân thành cảm ơn!
* Dũng Trung-090567448:Lê Văn Thuyên0379136392--->Ok.Anh!
* Bé Nguyễn-benguyen@gmail,com:Lê Văn Thuyên0379136392--->Good job!
+ -:
+ -: