Bài tập thực hành design pattern
Bài 1: Singleton - Kết nối Database
Viết class DatabaseConnection theo Singleton Pattern.
- Mỗi lần gọi
DatabaseConnection(), chỉ được tạo duy nhất 1 instance. - In ra
id(object)để kiểm tra, nếu tạo nhiều lần thì id phải giống nhau.
Gợi ý kiểm tra:
db1 = DatabaseConnection()
db2 = DatabaseConnection()
print(db1 is db2) # True
Bài 2: Singleton - Logger
Viết class Logger theo Singleton Pattern.
- Có phương thức
log(message)in ra tin nhắn. - Khi gọi logger ở nhiều nơi trong code, phải dùng chung một instance.
Ví dụ:
log1 = Logger()
log2 = Logger()
log1.log("Chương trình bắt đầu")
log2.log("Lỗi: Không tìm thấy file")
Bài 3: Factory - Hình học
Viết ShapeFactory có thể tạo ra:
Circlevới phương thứcdraw()in ra "Vẽ hình tròn"Squarevới phương thứcdraw()in ra "Vẽ hình vuông"Trianglevới phương thứcdraw()in ra "Vẽ hình tam giác"
Ví dụ:
factory = ShapeFactory()
shape = factory.create_shape("circle")
shape.draw()
Bài 4: Factory - Phương tiện giao thông
Viết TransportFactory có thể tạo ra:
Bike→ phương thứcmove()in ra "Đi bằng xe máy"Car→ phương thứcmove()in ra "Đi bằng ô tô"Bus→ phương thứcmove()in ra "Đi bằng xe buýt"
Viết đoạn code cho phép nhập từ bàn phím "bike", "car", "bus" và tạo object tương ứng.
Bài 5: Kết hợp Singleton + Factory
Tạo một hệ thống đặt đồ uống:
DrinkFactorycó thể tạoCoffee,Tea.- Có class
OrderManager(theo Singleton pattern) quản lý danh sách order. - Khi gọi
OrderManager.add_order(drink), order sẽ được lưu trong danh sách chung.
Ví dụ:
factory = DrinkFactory()
coffee = factory.create_drink("coffee")
tea = factory.create_drink("tea")
order_manager = OrderManager()
order_manager.add_order(coffee)
order_manager.add_order(tea)
order_manager.show_orders()
# Output: Coffee, Tea