Đăng ký Đăng nhập

Tài liệu Composite

.PDF
22
553
124

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 -

Tài liệu liên quan