Mô tả:
Mẫu thiết kế composite
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN-Tp.HCM
KHOA CÔNG NGHỆ PHẦN MỀM
SEMINAR
Đề tài:
MẪU THIẾT KẾ
COMPOSITE
GV:
Phạm Thi Vương
SVTH:
Lê Thị Kim Chung
13520082
Lê Tuấn Vũ
13521046
Trương Huy Hoàng
13520301
Đặng Thế Hoàng
13520302
1
NỘI DUNG
1
TỔNG QUAN VỀ MẪU COMPOSITE
2
CẤU TRÚC VỀ MẪU COMPOSITE
3
CÀI ĐẶT VÀ DEMO
4
ỨNG DỤNG VÀ MẪU LIÊN QUAN
1
TỔNG QUAN VỀ MẪU COMPOSITE
Khái niệm
Cho phép thực hiện các tương tác với tất cả đối tượng
trong mẫu tương tự nhau.
Mục tiêu:
Tổ chức các đối tượng theo cấu trúc phân cấp dạng cây.
Tất cả đối tượng trong cấu trúc được thao tác theo một
cách thuần nhất như nhau.
1
TỔNG QUAN VỀ MẪU COMPOSITE
Phân loại
Mẫu composite thuộc nhóm Structural Pattern (cấu trúc)
Tần suất sử dung
Khá cao
Bí danh
Mẫu “Đối tượng đa hợp”
1
TỔNG QUAN VỀ MẪU COMPOSITE
Ví dụ:
Cấu trúc file thư mục
Tính kích thước (size) của một
thư mục (trong thư mục gồm
nhiều file và thư mục con, trong
thư mục con lại bao gồm nhiều
file và thư mục con khác, và ….)
Cấu trúc file thư mục
Khi tính điện trở của toàn mạch
thì đó đơn giản là tổng điện trở
của các linh kiện cộng với tổng
điện trở của các mạch con.
Dễ thấy rằng, ở đây, ta cần xây dựng một cấu trúc sao cho xứ lý các đối
tượng thành phần cũng giống như là xử lý với tổng thể
1
TỔNG QUAN VỀ MẪU COMPOSITE
Ứng dụng
Miêu tả cho toàn bộ hệ thống của các đối tượng.
Có thể bỏ qua sự khác biệt giữa thành phần của các đối tượng và các đối
tượng cá nhân.
Xử lý tất cả các đối tượng trong cơ cấu Composite chung.
2
CẤU TRÚC VỀ MẪU COMPOSITE
Sơ đồ UML
2
CẤU TRÚC VỀ MẪU COMPOSITE
Component
Khai báo Interface cho thành phần đối tượng.
Thực thi thao tác mặc định.
Khai báo một Interface cho phép truy cập đến các thành phần con.
Leaf
Biểu diễn các đối tượng lá trong thành phần đối tượng.
Định nghĩa hành vi cho các đối tượng nguyên thủy trong thành phần.
2
CẤU TRÚC VỀ MẪU COMPOSITE
Composite
Định nghĩa một thao tác cho các thành phần có thành phần con.
Lưu trữ thành phần con.
Thực thi sự quản lý các thành phần con của giao diện Compoment
Component
Thao tác các đối tượng dựa trên giao diện Composite
2
CẤU TRÚC VỀ MẪU COMPOSITE
Ưu điểm
Làm cho việc thêm các thành phần trong một cấu trúc tương đồng
trở nên dễ dàng.
Làm cho các client đơn giản hơn, vì không cần phải biết là đang
làm việc trên một leaf hoặc một thành phần của Composite.
Nhược điểm
Khó khăn trong việc hạn chế các loại thành phần trong một
Composite.
3
CÀI ĐẶT VÀ DEMO
Cài đặt
Tạo lớp trừu tượng IComponent
abstract class IComponent {
protected string name;
public IComponent(string name){
this.name = name;
}
public abstract void Add(IComponent c);
public abstract void Remove(IComponent c);
public abstract void Display(int depth);
}
3
CÀI ĐẶT VÀ DEMO
Cài đặt
Tạo lớp thực thể Composite
class Composite : IComponent
{
private List _children = new List();
public Composite(string name) : base(name) { }
public override void Add(IComponent Icomponent) { }
public override void Remove(IComponent icomponent) { }
public override void Display(int depth) { }
}
3
CÀI ĐẶT VÀ DEMO
Cài đặt
Tạo lớp thực thể Component
class Component : IComponent
{
public Component(string name) : base(name) { }
public override void Add(Component c) { }
public override void Remove(Component c) { }
public override void Display(int depth) { }
}
CÀI ĐẶT VÀ DEMO
3
Demo
Tất cả các thư mục và tệp tin đều được coi là File. Vậy ta tạo 1 interface
IFile đại điện cho File và Folder có các method chung là getName (tên của file
hoặc folder) và getSize (kích thước).
CÀI ĐẶT VÀ DEMO
3
Demo
IFile
getName();
getSize();
Display();
File
Folder
getName();
getSize();
Display();
getName();
getSize();
addFile();
removeFile();
Display();
4
ỨNG DỤNG VÀ MẪU LIÊN QUAN
Ứng dụng
Các mẫu Composite có ứng dụng rộng rãi và thường được sử dụng kết
hợp với các mẫu Decorator, Iterator và Visitor.
Danh sách composite của nó cũng có thể sử dụng trong các mẫu
Flyweight.
Các mẫu Composite trông giống như một thể hiện cấu trúc dữ liệu thông
thường, nhưng nó làm được nhiều hơn thế bởi vì nó có khả năng thao
tác với các loại phần tử tương đương khác nhau.
4
ỨNG DỤNG VÀ MẪU LIÊN QUAN
Tình huống sử dụng
Một cấu trúc bất thường của các đối tượng và các composite (hợp tử)
của các đối tượng
Khách hàng bỏ qua tất cả những sự khác biệt quan trọng giữa các đối
tượng đơn lẻ và các tập hợp của các đối tượng
Để xử lý tất cả các đối tượng trong một composite (hợp tử đa hợp)
đồng nhất
4
ỨNG DỤNG VÀ MẪU LIÊN QUAN
Mẫu liên quan
Decorator
Dùng để cung
cấp cho các hoạt
động như Thêm,
Xóa và Tìm kiếm
Flyweight
Dùng để chia sẻ
các thành phần,
cung cấp các khái
niệm về "nơi hiện
tại" có thể được bỏ
qua và tất cả các
xử lý đều được bắt
đầu từ Composite
gốc.
Visitor
Dùng để xác định
vị trí các hoạt
động mà hiện
đang được phân
phối giữa
Composite và
các lớp thành
phần.
Builder, Decorator, Flyweight, Interpreter, Visitor, Chain of Responsibility, Command,Iterator
4
ỨNG DỤNG VÀ MẪU LIÊN QUAN
So sánh mẫu Flyweight và Composite
Flyweight là một mô hình máy chủ mà nó có thể hữu ích cho rất nhiều
các mẫu khác để giữ gọn dữ liệu. Ví dụ như những mẫu Interpreter, State,
và Strategy.
Mẫu Composite cũng rất hữu ích trong sự kết hợp với những mẫu cần
phải quản lý các cấu trúc dữ liệu khác. Phổ biến hơn, mẫu Composite sẽ
sử dụng mẫu Flyweight, hơn là những cách khác xung quanh.
4
ỨNG DỤNG VÀ MẪU LIÊN QUAN
So sánh mẫu Flyweight và Composite
Mẫu Composite và Flyweight đều xử lý cấu trúc của nhiều đối tượng.
Mẫu composite liên quan đến việc phản ứng với các lệnh truy cập và sửa
đổi cấu trúc dữ liệu một cách thống nhất, trong khi mẫu Flyweight là một
cách thông minh để tiết kiệm không gian khi có nhiều đối tượng giống hệt
nhau.
Cả hai đều có đặc tính (property) mà các kiểu (type) tạo thành mô hình đều
có thể được đóng gói vào một namespace và sau đó được sử dụng bởi một
client.
- Xem thêm -