"Bá cháy" là thương hiệu trà sữa có nguồn gốc thương hiệu tại Việt Nam. Nguyên vật liệu được kiểm duyệt và nhập khẩu từ Singapore và Đài Loan. Là thương hiệu đại diện cho sản phẩm chất lượng và giá thành hợp lí. Cửa hàng "Bá cháy" đầu tiên ra đời vào năm 2012, mang phong cách loại hình takeaway - trà sữa mang đi, mô hình được ưa chuộng nhất lúc đó. Năm 2013 chính thức thành lập công ty CP TMDV Chào Ngày Mới và đến 2017 công ty nhận vốn góp từ công ty TNHH DIOS Investment Vina - một quỹ đầu tư trực tiếp vốn 100% từ Hàn Quốc. Trước đó bằng hình thức chuyển nhượng thương hiệu, "Bá cháy" đã thành công với iệc sỡ hữu 33 cửa hàng trên toàn quốc chủ yếu ở các thành phố lớn như TP. Hồ Chí inh, Đà Nẵng, Hà Nội. Sau khi kết hợp cùng công ty DIOS, "Bá cháy" chính thức mở rộng thêm 11 cửa hàng ở các tỉnh thành: Quảng Ninh, Bình Dương, Vũng Tàu..Với châm ngôn tuyệt đối không sử dụng nguyên liệu không rõ nguồn gốc xuất xứ, trà sữa "Bá cháy" tự hào mang lại cho khách hàng những sản phẩm chất lượng nhất. "Bá cháy" luôn cảm kích về sự tin dùng và dễ thương của quý khách hàng. Một trong những điều làm nên thương hiệu của "Bá cháy" là việc order có thể diễn ra một cách trực tuyến ,nhanh gọn, an toàn và tiện lợi nhờ vào app quản lý đặt đồ ăn nhanh do đội ngũ dev gồm 4 thành viên phát triển.
Nếu khởi tạo nhiều hơn một đối tượng thì sẽ gặp phải một số vấn đề như hành vi chương trình không chính xác, lạm dụng tài nguyên hoặc kết quả không nhất quán.
Khi phát triển phần mềm việc thêm hành vi (method) cho object thường xảy ra. Để giải quyết vấn đề này ta có thể bổ sung hành vi cho object bằng cách thêm method vào class hoặc tạo 1 sub class có thêm method. Bổ sung method cho class thì chúng ta cần kiểm thử lại code cho cả class. Hơn nữa cách kế thừa cũng có nhược điểm là nó chỉ thêm hành vi tĩnh chứ không giúp object có để sử dụng hành vi mới trong quá trình chạy
Pattern này giúp tách phần view ra khỏi model và controller. Điều này có nghĩa là khi chúng ta muốn sửa đổi thuật toán thì nó sẽ không ảnh hưởng đến những phần không liên quan. Nếu không sử dụng pattern này, thì việc sắp xếp và sửa đổi các thuật toán sẽ ảnh hưởng đến các phần không liên quan.
Trong bài này, command pattern giúp việc bật tắt các nút trong form trở nên gọn gàng hơn vì nó gom các nút có cùng tác vụ lại thành 1 nút. Nếu không sử dụng pattern này, code sẽ bị tràn lan và lặp lại như nhau ở mỗi khi chúng ta gọi 1 nút
Pattern này giúp việc code trở nên dễ dàng hơn và tránh trùng lặp. Cụ thể là các thao tác chung của các lớp con sẽ đc gom lại ở lớp cha và khi chúng muốn gọi hàm ra thì hàm sẽ được hiện thực bên trong lớp con đó. Khi muốn bảo trì hay sửa chữa hàm của lớp con nào thì ta sửa trong hàm đó. Tránh trường hợp ảnh hưởng đến các hàm khác
- Thư viện sử dụng: Microsoft.VisualStudio.Services.Client(16.170.0), System.Data.SqlClient(4.8.3)
- IDE: Visual Studio, Microsoft SQL Server Management Studio
- Database: SQL
-
Clone project từ link: Github bằng cách mở cmd và nhập lệnh
git clone https://github.com/danghieu1407/DesignPatternDemo.git
về máy của bạn. -
Mở folder
DesignPatternDemo
, double click vào fileDesignPatternMidterm.sln
và chọn mở bằng Visual Studio để mở project. -
Đăng nhập vào SQL Server bằng chế độ
SQL Server Authentication
và import database từ fileDemoDatabase.sql
vào SQL Server. -
Truy cập vào Visual Studio chọn
Server Explorer
và click chuột phải vàoData Connections
chọnAdd Connection
. Ở mụcLog on to the server
chọnSQL Server Authentication
, nhập vào các thông tin sau:User name
,Password
và nhập tên server ở mụcServer Name
, chọn tên database làDemoDatabase
ở mụcSelect or enter a database name
. -
Đổi
Connection String
ở file ./ConfigurationDTB/DatabaseProvide.cs dòng số 13.
- Singleton Pattern: Là một trong những design pattern thuộc nhóm khởi tạo – Creational Patterns. Singleton thường được sử dụng khi chúng ta mong muốn chỉ có một đối tượng tồn tại duy nhất và có thể truy cập ở mọi lúc. Singleton đảm bảo rằng 1 class chỉ có 1 instance duy nhất tồn tại ở bất kỳ thời điểm nào class đó được request.
- Decorator Pattern: Là một trong những Pattern thuộc nhóm cấu trúc (Structural Pattern). Nó cho phép người dùng thêm chức năng mới vào đối tượng hiện tại mà không muốn ảnh hưởng đến các đối tượng khác. Kiểu thiết kế này có cấu trúc hoạt động như một lớp bao bọc (wrap) cho lớp hiện có.
- MVC Pattern: MVC Design Pattern được dịch ra là các mẫu thiết kế mô hình MVC trong công nghệ phần mềm. Một mẫu thiết kế chính là một giải pháp lặp lại chung cho các vấn đề thường xảy ra trong thiết kế phần mềm khác. Nhiều mẫu thiết kế sẽ là nhiều giải pháp cho các vấn đề chung mà nhà thiết kế phải đối mặt trong quá trình phát triển phần mềm. Tất cả những giải pháp này có được là nhờ việc thử nghiệm và lỗi từ các nhà phát triển phần mềm khác.
- Command Pattern: Là một trong 23 design pattern Gang of Four nổi tiếng. Command pattern thuộc nhóm các pattern hành vi: Đóng gói tất cả thông tin cần thiết vào 1 đối tượng để thực hiện hành động hay kích hoạt một sự kiện thực hiện sau đó. Các thông tin có thể bao gồm tên phương thức, các biến và giá trị cần thiết...hay đơn giản hơn đó là nó cho phép chuyển yêu cầu thành đối tượng độc lập, có thể được sử dụng để tham số hóa các đối tượng với các yêu cầu khác nhau như log, queue (undo/redo), transtraction.
- Template Method Pattern: Là một trong những Pattern thuộc nhóm hành vi (Behavior Pattern). Pattern này nói rằng “Định nghĩa một bộ khung của một thuật toán trong một chức năng, chuyển giao việc thực hiện nó cho các lớp con.
- Singleton Pattern: Khi sử dụng thì không nên để quá nhiều chức năng, cũng như tạo quá nhiều thực thể kết nối. Do đó Singleton Pattern áp dụng vào đây thì hợp lí, tất cả chức năng nên sử dụng chung một thực thể kết nối.
- Decorator Pattern: Decorator Pattern phù hợp với các việc có sự thay đổi, ở đây sự thay đổi là khi thêm Phần thêm hoặc Topping(tuỳ theo sở thích mà khách hàng lựa chọn có hoặc không, hay có thể là cửa hàng có thêm Phần thêm hoặc Topping khác) dù có thay đổi thì cũng không gây ảnh hưởng đến các lớp cũ .Trong bài, Decorator dùng để bổ sung một số thức ăn là Phần thêm, Topping cho món ăn hoặc thức uống. Ở đây, thực đơn chia làm 6 món, trong đó có 3 món được áp dụng Decorator vào đó là Gà rán và Trà sữa. Decorator được dụng để thêm các Topping cho món ăn hoặc thức uống(món ăn là Gà rán, thức uống là Trà sữa).
- MVC Pattern: Áp dụng MVC (Model - View - Controller) để dễ dàng thao tác dữ liệu giữa Frontend và Backend, dễ dàng hơn trong việc kiểm tra, phát hiện lỗi để đảm bảo chất lượng phần mềm có kết quả cao hơn.
- Command Pattern: Dùng để quản lý các nút chọn món ở trong phần đặt món. Command Pattern trong bài này có nhiệm vụ làm cho một số nút cùng Enable, Disable, đổi về cùng một màu, ẩn nút và hiện nút. Điều này giúp cho viêc lập trình bớt phức tạp và không còn bị thiếu hoặc thừa câu lệnh về nút (ví dụ như quên Enable nút hoặc Disable nhầm nút).
- Template Method Pattern: Template Method Pattern là một quá trình bao gồm các bước theo thứ tự không thay đổi, và cũng có những bước thường xuyên thay đổi tuỳ vào nhu cầu. Do đó ở đây dùng để nêu ra một số phương thức chung dùng để chế biến các món ăn và việc thực hiện cụ thể các món ăn đó được nêu rõ ở mỗi món nêu cụ thể.
Ứng dụng đặt đồ ăn "BÁ CHÁY" gồm cái 3 tác nhân chính là người dùng, nhân viên và admin
- Người dùng: Có thể đăng nhập, đăng ký, quên mật khẩu và order món ăn.
- Nhân viên: Có các chức năng của người dùng và có thể chế biến món ăn.
- Admin: Có tất cả chức năng của người dùng và nhân viên và có thêm chức năng quản lý tài khoản (CURD tài khoản). Account dùng trong ứng dụng.
- Account Admin: Email: PH123@gmail.com - Password: 123456
- Account Staff: Email: GD123@gmail.com - Password: GD1234
- Account Customer: Email: DH123@gmail.com - Password: DH1234
- Account Customer: Email: GH123@gmail.com - Password: GH1234
Người dùng nhập username và password để đăng nhập vào hệ thống, họ cũng có thể chọn nhớ tài khoản cho lần đăng nhập tiếp theo mà không cần nhập lại tài khoản. Nếu người dùng quên mật khẩu thì có thể chọn nút quên mật khẩu và nhập thông tin cần thiết để lấy lại mất khẩu.
Người dùng nhập các thông tin cần thiết để đăng ký tài khoản nhằm mục đích sử dụng hệ thống.
Hiển thị các chức năng mà hệ thống có như Đặt món, Quản lí tài khoản, Khu bếp.
Sau khi chọn chức năng Đặt món sẽ có giao diện như hình trên, tại đây có thể chọn các thức ăn hoặc thức uống có trên màn hình, có thể chọn thêm Phần thêm hoặc Topping. Có thể nhập số lượng món ăn cần mua, hiển thị tống giá tiền cần phải thanh toán.
Say khi chọn món ấn đặt hàng. Hệ thống sẽ hiện lên số tiền bạn cần thanh toàn và yêu cầu bạn chuẩn bị đầy đủ số tiền để trả cho shipper.
Khi chọn Khu bếp sẽ hiển thị giao diện chọn các món ăn chế biến. Khi chọn vào món ăn thì sẽ hiển thị cách thức thực hiện món ăn đó.
Sau khi chọn món ăn cần chế biến và nhấn chế biến. Hệ thống sẽ tiến hành chế biến món ăn.
Đây là giao diện quản lý tài khoản cho admin. Tại đây admin có thể có các thao tác như Thêm account mới, Sửa thông tin account, xóa account.
Code | Module1 | ||||
---|---|---|---|---|---|
Test requirement | Brief description about requirements which are tested in this table | ||||
Tester | |||||
Passed | Failed | Untested | Blocked | Skipped | Number of Test cases |
2 | 1 | 0 | 0 | 0 | 3 |
ID | Test Case Description | Test Case Procedure | Expected Output | Inter-test case Dependence | Result | Test date | Note |
---|---|---|---|---|---|---|---|
[Module1-1] | Khi chưa chọn món không bấm được nút hủy đơn | 1) Đăng nhập hệ thống 2) Chọn "Đặt món" 3) Bấm nút "Hủy đơn" | Không ấn được | Passed | |||
[Module1-2] | Chọn 1 món 2 lần thì tự tăng số lượng | 1) Đăng nhập hệ thống 2) Chọn "Đặt món" 3) Bấm nút "thêm" 4) Lập lại bước 3 1 lần nữa | Tăng số lượng | Failed | |||
[Module1-3] | Disabled các button khác khi đang chọn 1 món | 1) Đăng nhập hệ thống 2) Chọn "Đặt món" 3) Chọn 1 món | Disable các button khác | Passed |
Code | Module2 | ||||
---|---|---|---|---|---|
Test requirement | Brief description about requirements which are tested in this table | ||||
Tester | |||||
Passed | Failed | Untested | Blocked | Skipped | Number of Test cases |
2 | 0 | 0 | 0 | 0 | 2 |
ID | Test Case Description | Test Case Procedure | Expected Output | Inter-test case Dependence | Result | Test date | Note |
---|---|---|---|---|---|---|---|
[Module2-1] | Khi chưa chọn món cần chế biến thì sẽ không hiện nút "Chế biến" | 1) Đăng nhập hệ thống 2) Chọn "Khu bếp" | Không hiện nút "Chế biến" | Passed | |||
[Module2-2] | Chọn 1 món thì sẽ không chọn được món khác | 1) Đăng nhập hệ thống 2) Chọn "Khu bếp" 3) Chọn 1 món bất kì | Không chọn được món khác | Passed |
STT | Họ và Tên | MSSV | CÔNG VIỆC | MỨC ĐỘ HOÀN THÀNH |
---|---|---|---|---|
1 | Đặng Phúc Huy | 51900087 | Tạo menu và áp dụng Decorator Pattern cho gà rán và trà sữa, viết README.md | 100% |
2 | Giang Vinh Diễn | 51900035 | Command Pattern các nút món ăn, viết README.md | 100% |
3 | Nguyễn Đặng Hiếu | 51900073 | MVC Pattern & Singleton Pattern, viết README.md | 100% |
4 | Trần Gia Huy | 51900685 | Template Method pattern trong nhà bếp, viết README.md | 100% |
1. https://toihocdesignpattern.com/
2. https://viblo.asia/p/cach-viet-readme-chat-LzD5dr9EZjY
1. https://www.tutorialspoint.com/design_pattern
- Nguyễn Đặng Hiếu - 51900073
- Giang Vinh Diễn - 51900035
- Đặng Phúc Huy - 51900087
- Trần Gia Huy - 51900685