Mục lục
Decorator Design Pattern trong C# cho phép chúng ta thêm động các chức năng mới vào một đối tượng hiện có. Điều này không làm thay đổi hay sửa đổi cấu trúc của nó.
Pattern này hoạt động như một lớp bao bọc cho lớp hiện có. Nó tự động thay đổi chức năng của đối tượng trong thời gian chạy mà không ảnh hướng đến chức năng hiện có của đối tượng.
Ví dụ: Giả sử mình có một chiếc xe ô tô không có động cơ. Bây giờ mình muốn thêm một động cơ xăng hoặc động cơ Diesel vào chiếc ô tô này. Vậy khi thêm vào thì những thành phần trước đó và chức năng của nó không bị thay đổi. Chỉ có thêm động cơ mà thôi.
Trong phần này mình sẽ thực hiện triển khai Decorator Design Pattern bằng ví dụ chiếc ô tô ở trên. Quá trình triễn khai được thực hiện theo từng bước sau đây.
Bước 1: Tạo ICar interface.
Interface này có một abstract method, phương thức này được thực hiện các subclasses cụ thể.
ICar.cs
|
Bước 2: Tạo Concrete Car.
Tạo một class BMWCar có có chức năng triển khai interface ICar, trong đó có một phương thức ManufactureCar()
. Phương thức này chịu trách nhiệm sản xuất CarBody, CarDoor, CarWheels, CarGlass.
Vì vậy khi chúng ta gọi phương thức này, kết quả trả về không có động cơ nào cả, chỉ có các phần cứng bên ngoài này mà thôi.
BMWCar.cs
|
Bước 3: Tạo Car Decorator.
CarDecorator.cs
|
Bước 4: Tạo Diesel Car Decorator.
Đây là một class được kế thừa từ abstract class CarDecorator. Class này ghi đè phương thức ManufactureCar()
. Những gì phương thức này làm là thêm một động cơ Diesel vào xe và trả lại chiếc xe BMW có động cơ Diesel.
DieselCarDecorator.cs
|
Bước 5: Tạo Petrol Car Decorator.
Tương tự như bước 4, sau khi thêm động cơ xăng vào sẽ trả lại chiếc BMW với động cơ đó.
PetrolCarDecorator.cs
|
Bước 6: Tạo Client.
Đầu tiên ta tạo đối tượng BMWCar sau đó gọi phương thức ManufatureCar sẽ tạo ra một chiếc xe không có động cơ.
Tiếp đến tạo instance của DieselCarDecorator và truyền instance BMWCar làm tham số. Khi chúng ta gọi hàm ManufatureCar()
thì nó sẽ thêm động cơ Diesel vào ô tô.
Main
|
Kết quả:
Về bài trước... |
Bài tiếp theo... |
+ 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!
+ -:
+ -: