Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 28 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
28
Dung lượng
1,26 MB
Nội dung
ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN BÁO CÁO THU HOẠCH MÔN HỌC PHƯƠNG PHÁP NGHIÊN CỨU KHOA HỌC ĐỀ TÀI: PHÂN TÍCH NỘI DUNG, NHỮNG NGUYÊN LÝ SÁNG TẠO CĨ TRONG CÁC MẪU THIẾT KẾ HƯỚNG ĐỐI TƯỢNG THƠNG DỤNG LỚP: KHMT-K22 HỌ TÊN: Trần Mạnh Linh MSHV : 1211038 Tp.Hồ Chí Minh, tháng 12 năm 2012 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Phân tích nguyên lý sáng tạo mẫu thiết kế hướng đối tượng Mục lục Mục lục Lời mở đầu: Tổng quan Design pattern A Lịch sử design pattern I Design pattern ? II Hệ thống mẫu design pattern B Hệ thống mẫu I Nhóm Creational Nhóm Structural Nhóm Behavioral Các mẫu thiết kế thơng dụng, có tần suất sử dụng cao: Các mẫu để tạo - Creational patterns Các mẫu cấu trúc - Structural patterns Các mẫu ứng xử - Behavioral patterns Phân tích nội dung tính sáng tạo mẫu Design pattern II Nhóm Creational Abstract factory: Builder: Factory Method: Prototype: 13 Singleton: 14 Nhóm Structural 16 Adapter: 16 Composite: 17 Proxy: 19 Nhóm Behavioral 21 Command: 21 10 Observer: 23 11 Strategy: 24 12 Template Method: 26 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Phân tích nguyên lý sáng tạo mẫu thiết kế hướng đối tượng Lời mở đầu: Một dân tộc không sáng tạo trở nên hủ bại - GS Tom Cannon Câu chuyện ngủ quên tự hài lòng người Anh suốt 70 năm sau Thế chiến II phần khác giới không ngừng sáng tạo sáng tạo lại để giành vị hàng đầu kinh tế toàn cầu mà GS Tom Cannon chia sẻ buổi bàn tròn trực tuyến “Tương lai Việt Nam – đường sáng tạo” đáng để suy ngẫm Mỗi người, dân tộc, chí cỗ máy khơng có sáng tạo liên tục rơi vào tình trạng bất động Trong tình trạng bất động ấy, nói cách văn chương hay cách thực tế đồng nghĩa với chết Sáng tạo, nguồn lực với tiềm bất tận người, cốt lõi phát triển, tất yếu cho cải tạo giới, giúp tiến khoa học kỹ thuật Với kiến thức, câu chuyện thầy Hoàng Kiếm truyền thụ thời gian học, em lại hiểu thấy rõ kỳ diệu sáng tạo, trở nên yêu thích muốn áp dụng phương pháp sáng tạo vào thực tiễn Chân thành cám ơn thầy Hoàng Kiếm, thầy dạy nhiệt tình, chân thành, tạo cho học viên tâm lý thoải mái học, tiếp thu kiến thức quý báu Trong ngành công nghệ thông tin ngày nay, môi trường tin học môi trường sáng tạo nảy sinh, phát triển đa dạng phong phú Trong chủ đề em xin phân tích nội dung, xuất 40 nguyên tắc sáng tạo mẫu thiết kế thông dụng thường áp dụng công nghệ phần mềm LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Phân tích nguyên lý sáng tạo mẫu thiết kế hướng đối tượng A Tổng quan Design pattern I Lịch sử design pattern Ý tưởng dùng mẫu xuất phát từ ngành kiến trúc, Alexander, Ishikawa, Silverstein, Jacobson, Fiksdahl-King Angel (1977) lần đưa ý tưởng dùng mẫu chuẩn thiết kế xây dựng truyền thông Họ xác định lập sưu liệu mẫu có liên quan để dùng để giải vấn đề thường xảy thiết kế cao ốc Mỗi mẫu cách thiết kế, chúng phát triển hàng trăm năm giải pháp cho vấn đề mà người ta làm lĩnh vực xây dựng thường gặp Các giải pháp tốt có ngày hơm qua q trình sàng lọc tự nhiên Mặc dù nghành cơng nghệ phần mềm khơng có lịch sử phát triển lâu dài nghành kiến trúc, xây dựng Công nghệ phần mềm ngành công nghiệp tiên tiến, tiếp thu tất tốt đẹp từ ngành khác Mẫu xem giải pháp tốt để giải vấn đề xây dựng hệ thống phần mềm Suốt năm đầu 1990, thiết kế mẫu thảo luận hội thảo workshop, sau người ta nổ lực để đưa danh sách mẫu lập sưu liệu chúng Những người tham gia bị dồn vào việc cần thiết phải cung cấp số kiểu cấu trúc mức quan niệm cao đối tượng lớp để cấu trúc dùng để tổ chức lớp Đây kết nhận thức đựơc việc dùng kỹ thuật hướng đối tượng độc lập không mang lại cải tiến đáng kể chất lượng hiệu công việc phát triển phần mềm Mẫu xem cách tổ chức việc phát triển hướng đối tượng, cách đóng gói kinh nghiệm ngưòi trước hiệu thực hành Năm 1994 hội nghị PLoP( Pattern Language of Programming Design) tổ chức Cũng năm sách Design patterns: Elements of Reusable Object Oriented Software (Gamma, Johnson,Helm Vhissdes,1995) xuất vào thời điểm diễn hội nghị OOPSLA’94 Đây tài liệu cịn phơi thai việc làm nỗi bật ảnh hưởng mẫu việc phát triển phần mềm, đóng góp xây dựng mẫu thành danh mục (catalogue) với định dạng chuẩn dùng làm tài liệu cho mẫu tiếng với tên Gang of Four (bộ tứ), mẫu thường LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Phân tích nguyên lý sáng tạo mẫu thiết kế hướng đối tượng gọi mẫu Gang of Four Còn nhiều sách khác xuất năm sau, định dạng chuẩn khác đưa Năm 2000 Evitts có tổng kết cách mẫu xâm nhập vào giới phần mềm (sách ông lúc nói mẫu sử dụng UML chưa đưa khái niệm mẫu thiết kế cách tổng qt) Ơng cơng nhận Kent Beck Ward Cunningham người phát triển mẫu với SmallTalk công việc họ báo cáo hội nghị OOPSLA’87 Có mẫu mà Kent Beck Ward Cunningham tìm việc kết hợp người dùng hệ thống mà họ thiết kế Năm mẫu áp dụng để thiết kế giao diện người dùng mơi trường Windows II Design pattern ? Design patterns tập giải pháp cho cho vấn đề phổ biến thiết kế hệ thống máy tính Đây tập giải pháp công nhận tài liệu có giá trị, người phát triển áp dụng giải pháp để giải vấn đề tương tự Giống với yêu cầu thiết kế phân tích hướng đối tượng (nhằm đạt khả sử dụng thành phần thư viện lớp), việc sử dụng mẫu cần phải đạt khả tái sử dụng giải pháp chuẩn vấn đề thường xuyên xảy Christopher Alexander nói rằng: ”Mỗi mẫu mơ tả vấn đề xảy lặp lặp lại môi trường mô tả cốt lõi giải pháp vấn đề Bằng cách bạn dùng triệu lần mà khơng làm giống lần” Design pattern phần UML cốt lõi,nhưng lại đựơc sử dụng rộng rãi thiết kế hệ thống hướng đối tượng UML cung cấp chế biểu diễn mẫu dạng đồ hoạ LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Phân tích nguyên lý sáng tạo mẫu thiết kế hướng đối tượng B Hệ thống mẫu design pattern I Hệ thống mẫu Hệ thống mẫu design pattern có 23 mẫu định nghĩa “Design patterns Elements of Reusable Object Oriented Software” Hệ thống mẫu nói đủ tối ưu cho việc giải hết vấn đề tốn phân tích thiết kế xây dựng phần mềm thời điểm tại.Hệ thống mẫu design pattern chia thành nhóm: Creational, nhóm Structural,nhóm behavioral Nhóm Creational Gồm có pattern: AbstractFactory, Abstract Method, Builder, Prototype, Singleton Nhóm liên quan tới việc tạo thể nghiệm (instance) đối tượng, tách biệt với cách thực từ ứng dụng Muốn xem xét thông tin mẫu nhóm phải dựa vào biểu đồ phụ thuộc vào mẫu đó, mẫu thiên hành vi hay cấu trúc Nhóm Structural Gồm có mẫu: Adapter, Bridge, Composite, Decorator, Facade, Proxy, Flyweight Nhóm liên quan tới quan hệ cấu trúc thể nghiệm, dùng kế thừa,kết tập, tương tác Để xem thông tin mẫu phải dựa vào biểu đồ lớp mẫu Nhóm Behavioral Gồm có 11 mẫu : Interpreter, Template Method, Chain of Responsibility, Command, Iterator, Mediator, Memento, Observer, State, Strategy Visitor.Nhóm liên quan đến quan hệ gán trách nhiệm để cung cấp chức đối tượng hệ thống Đối với mẫu thuộc nhóm ta dựa vào biểu đồ cộng tác biểu đồ diễn tiến Biểu đồ cộng tác biểu đồ diễn tiến giải thích cho ta cách chuyển giao chức LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Phân tích nguyên lý sáng tạo mẫu thiết kế hướng đối tượng Các mẫu thiết kế thơng dụng, có tần suất sử dụng cao: Trong tiểu luận em xin trình bày nội dung, phân tích tính sáng tạo 12 mẫu thiết kế thông dụng nhất, sử dụng nhiều công nghệ phần mềm sau: Các mẫu để tạo - Creational patterns Abstract factory pattern Builder Factory method pattern Prototype Singleton Các mẫu cấu trúc - Structural patterns Adapter Composite Proxy Các mẫu ứng xử - Behavioral patterns Command Observer Strategy Template method II Phân tích nội dung tính sáng tạo mẫu Design pattern Nhóm Creational Abstract factory: a) Vấn đề đặt ra: Chúng ta để ý thấy hệ điều hành giao diện đồ hoạ, công cụ muốn cung cấp giao diện người dùng dựa chuẩn look-and-feel, chẳng hạn chương trình trình diễn tài liệu power point Có nhiều kiểu giao diện look-and-feel hành vi giao diện người dùng khác thể cuộn tài LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Phân tích nguyên lý sáng tạo mẫu thiết kế hướng đối tượng liệu (scroll bar), cửa sổ (window), nút bấm (button), hộp soạn thảo (editbox), Nếu xem chúng đối tượng thấy chúng có số đặc điểm hành vi giống mặt hình thức lại khác cách thực Chẳng hạn đối tượng button window, editbox có thuộc tính chiều rộng, chiều cao,toạ độ,… Có phương thức Resize(), SetPosition(), Tuy nhiên đối tượng gộp chung vào lớp theo nguyên lý xây dựng lớp đối tượng thuộc lớp phải có phương thức hoạt động giống Trong đối tượng có giao diện cách thực hành vi tương ứng lại hoàn toàn khác Vấn đề đặt phải xây dựng lớp tổng quát, chứa hết điểm chung đối tượng để từ dễ dàng sử dụng lại, ta gọi lớp WidgetFactory.Các lớp đối tượng window, button,editbox kế thừa từ lớp này.Trong thiết kế hướng đối tượng, xây dựng mơ hình lớp tối ưu hố sau: lớp WidgetFactory AbstractFactory b) Định nghĩa: Mẫu AbstractFactory mẫu thiết kế mà cung cấp cho trình khách giao diện cho họ tập đối tượng thuộc lớp khác có chung giao diện với mà trực tiếp làm việc với lớp cụ thể LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Phân tích nguyên lý sáng tạo mẫu thiết kế hướng đối tượng c) Nguyên lý sáng tạo mẫu: Ta thấy rõ nét mẫu AbstractFactory hoạt động dựa nguyên lý sáng tạo nguyên lý kết hợp, lớp Abstract Factory kết hợp đối tượng tương tự lại với nhau, dẫn đến thống, dễ quản lý, tính hình tượng cao Builder: a) Vấn đề đặt ra: Trong ứng dụng lớn, với nhiều chức phức tạp mơ hình giao diện đồ sộ.Việc khởi tạo ứng dụng thường gặp nhiều khó khăn Chúng ta dồn tất công việc khởi tạo cho hàm khởi tạo Vì khó kiểm sốt hết, khơng phải lúc thành phần ứng dụng khởi tạo cách đồng Có thành phần tạo vào lúc dịch chương trình có thành phần tuỳ theo yêu cầu người dùng, tuỳ vào hồn cảnh ứng dụng, mà tạo Do người ta giao công việc cho đối tượng chịu trách nhiêm khởi tạo, chia việc khởi tạo ứng dụng riêng rẽ, để tiến hành khởi tạo riêng biệt hoàn cảnh khác Hãy tưởng tượng việc tạo đối tượng ta giống như việc tạo xe đạp Đầu tiên ta tạo khung xe, sau tạo bánh xe, tạo buđơng xe, xích, líp, Việc tạo phận không thiết phải đựơc thực cách đồng thời hay theo trật tự cả, tạo cách độc lập nhiều người Nhưng mơ hình sản xuất vậy, việc tạo xe khép kín để tạo xe hồn chỉnh, nhà máy sản xuất xe đạp.Ta gọi đối tượng nhà máy sản xuất xe đạp builder ( người xây dựng) b) Định nghĩa: Builder mẫu thiết kế hướng đối tượng tạo để chia công việc khởi tạo phức tạp đối tượng riêng rẽ từ tiến hành khởi tạo đối tượng hoàn cảnh khác LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Phân tích nguyên lý sáng tạo mẫu thiết kế hướng đối tượng c) Sơ đồ UML: Builder (VehicleBuilder): giao diện trừu tượng cho việc tạo phần đối tượng Product ConcreteBuilder (MotorCycleBuilder, CarBuilder, ScooterBuilder): xây dựng lắp ráp phần dẫn xuất việc cài đặt bổ sung giao diện Builder Định nghĩa giữ liên kết đến đại diện mà tạo Cung cấp giao diện cho việc gọi dẫn xuất Director (Shop): xây dựng đối tượng sử dụng giao diện Builder Product (Vehicle): biểu diễn đối tượng phức tạp.ConcreteBuilder dựng nên đại diện bên dẫn xuất định nghĩa trình xử lý thành phần lắp ráp Gộp lớp mà định nghĩa phận cấu thành, bao gồm giao diện cho việc lắp ráp phận kết cuối d) Nguyên lý sáng tạo mẫu: Nguyên lý phân nhỏ áp dụng mẫu Builder, công việc phức tạp khởi tạo đối tượng chia riêng rẽ để dễ quản lý, điều khiển theo ý người lập trình Factory Method: a) Vấn đề đặt ra: Các Framework thường sử dụng lớp trừu tượng để định nghĩa trì mối quan hệ đối tượng Một framework thường đảm nhiệm việc tạo đối tượng hoàn LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Phân tích nguyên lý sáng tạo mẫu thiết kế hướng đối tượng Prototype: a) Vấn đề đặt ra: Ta xem xét trường hợp phát triển game, có nhà lính, người chơi mua lính từ nhà lính này, nhà lính có ba loại lính lính kiếm, lính cung, lính ngựa, người dùng nhấp mua loại lính ba loại này, đối tượng lính tạo với thuộc tính, phương thức đặc thù Vấn đề xảy lập trình tới trường hợp người dùng chọn mua loại lính chung ta làm nào? Tạo đối tượng lính gán thuộc tính đặc trưng loại lính chọn? Làm tốn thời gian dễ gây nhầm lẫn công việc gán Mẫu prototype phát huy tác dụng trường hợp này, ta tạo mảng prototype chứa ba loại lính, gán tất tính chất, phương thức thích hợp cho loại lính, viết hàm clone(nhân bản) cho loại lính cần tạo loại lính ta việc gọi hàm clone với đầu vào loại lính b) Định nghĩa: Prototype mẫu thiết kế định đối tượng đặc biệt để khởi tạo, sử dụng thể nghiệm sơ khai sau chép đối tượng khác từ mẫu đối tượng c) Sơ đồ UML: 13 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Phân tích nguyên lý sáng tạo mẫu thiết kế hướng đối tượng Prototype (ColorPrototype): khai báo giao diện cho dịng vơ tính ConcretePrototype (Color): cài đặt thao tác cho dịng vơ tính Client (ColorManager): tạo đối tượng việc yêu cầu nguyên mẫu từ dịng vơ tính d) Ngun lý sáng tạo mẫu: Tạo đối tượng từ đối tượng mẫu có sẵn, thấy rõ mẫu Prototype áp dụng nguyên lý chép (copy) nguyên lý sáng tạo Singleton: a) Vấn đề đặt ra: Ta xem xét đối tượng quản lý tài nguyên ứng dụng Mỗi ứng dụng có quản lý tài nguyên, cung cấp điểm truy cập cho đối tượng khác ứng dụng Các đối tượng (ta gọi đối tượng khách) thực lấy từ quản lý tài nguyên chúng cần thay đổi giá trị nằm bên quản lý tài nguyên Để truy cập vào quản lý tài nguyên đối tượng khách cần phải có thể nghiệm quản lý tài nguyên, ứng dụng có nhiều thể nghiệm quản lý tài nguyên tạo 14 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Phân tích nguyên lý sáng tạo mẫu thiết kế hướng đối tượng Trong ví dụ hàm DoSomething() ClientObject1 truy cập vào đối tượng thuộc lớp ResourceManager in hình X = 0; đặt vào x = 100; Sau hàm Dosomething() ClientObject2 truy cập vào đối tượng thuộc lớp ResourceManager in hình X = đặt vào x = 500; Rõ ràng tài nguyên mà đối tượng khách truy cập vào thống lẫn Điều mà lẽ giá trị x ResourceManager bị ClientObject1 thay đổi ClientObject2 phải nhận biết điều in hình X=100 Nhưng theo logic cài đặt đối tượng thuộc lớp ClientObject1 truy cập đến ResourceManager tạo Instance đặt thuộc tính x = 100; Đối tượng ClientObject2 truy cập đến ResourceManager tạo Instance đặt thuộc tính x = 500 Hai Instance hoàn toàn độc lập vùng nhớ mà tài nguyên x mà quản lý tài nguyên độc lập với nhau.Vấn đề đặt phải tạo quản lý tài nguyên hoàn hảo tạo thể nghiệm giống nhiều nơi nhiều thời điểm khác ứng dụng Singleton cung cấp cho ta cách giải vấn đề b) Định nghĩa: Singleton mẫu thiết kế nhằm đảm bảo có thể nghiệm cung cấp điểm truy cập cách thống tồn cục c) Sơ đồ UML: Singleton (LoadBalancer): định nghĩa thao tác tạo thể nghiệm cho phép đối tượng khách truy nhập đến thể nghiệm đồng thao tác lớp Chịu trách nhiêm cho việc tạo trì thể nghiệm đồng 15 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Phân tích nguyên lý sáng tạo mẫu thiết kế hướng đối tượng d) Nguyên lý sáng tạo mẫu: Việc tạo thể để dùng chung cho tất cả, thống tiết kiếm nhớ sử dụng triệt để làm ta có liên tưởng đến nguyên lý sáng tạo đồng ngun lý liên tục tác động có ích, khắc phục vận hành không tải trung gian, tạo thể để sử dụng xuyên suốt Nhóm Structural Adapter: a) Vấn đề đặt ra: Đôi lớp công cụ thiết kế cho việc sử dụng lại, lại sử dụng lại giao diện khơng thích hợp với miền giao diện đặc biệt mà ứng dụng yêu cầu.Adapter đưa giải pháp cho vấn đề Trong trường hợp khác ta muốn sử dụng lớp tồn giao diện khơng phù hợp với giao diện lớp mà ta yêu cầu.Ta muốn tạo lớp có khả dùng lại, lớp cho phép kết hợp với lớp khơng liên quan khơng dự đốn trước, lớp khơng thiết phải có giao diện tương thích với nhau.(Chỉ với đối tượng adapter) ta cần sử dụng vài lớp tồn tại, để làm cho giao diện chúng tương thích với việc phân lớp giao diện việc làm khơng thực tế, để làm điều ta dùng đối tượng adapter để biến đổi giao diện lớp cha b) Định nghĩa: Adapter mẫu thiết kế dùng để biến đổi giao diện lớp thành giao diện khác mà clients yêu cầu Adapter ngăn cản lớp làm việc khơng thể làm cách khác giao diện khơng tương thích 16 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Phân tích nguyên lý sáng tạo mẫu thiết kế hướng đối tượng c) Sơ đồ UML: Target: định nghĩa miền giao diện đặc biệt mà Client sử dụng Client: cộng tác với đối tượng tương thích với giao diện Target Adaptee: định nghĩa giao diện tồn mà cần phải làm biến đổi cho thích hợp Adapter: làm tương thích giao diện Adaptee với giao diện Target d) Nguyên lý sáng tạo mẫu: Nguyên lý sử dụng trung gian 40 nguyên lý sáng tạo thể rõ mẫu thiết kế này, dùng đối tượng trung gian để chuyển đổi đối tượng khơng tương thích thành tương thích mơi trường định, mẫu adapter mẫu hay ta bắt gặp nhiều thực tế việc chuyển đổi định dạng phim, nhạc chương trình chơi phim, nhạc đa định dạng, Composite: a) Vấn đề đặt ra: Các ứng dụng đồ họa soạn thảo hình vẽ hệ thống lưu giữ biểu đồ cho phép người sử dụng xây dựng lên lược đồ phức tạp khác xa với thành phần bản, đơn giản Người sử dụng nhóm số thành phần để tạo thành thành phần khác lớn hơn, thành phần lớn lại nhóm lại để tạo thành thành phần lớn Một cài đặt đơn giản xác định lớp cho thành 17 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Phân tích nguyên lý sáng tạo mẫu thiết kế hướng đối tượng phần đồ họa Text Line, cộng với lớp khác cho phép hoạt động khuôn chứa thành phần Nhưng có vấn đề với cách tiếp cận này, là, mã sử dụng lớp phải tác động lên đối tượng nguyên thủy (cơ bản) đối tượng bao hàm thành phần nguyên thủy khác hầu hết thời gian người sử dụng tác động lên chúng Có phân biệt đối tượng làm cho ứng dụng trở nên phức tạp Composite pattern đề cập đến việc sử dụng thành phần đệ quy để làm cho client không tạo phân biệt Giải pháp Composite pattern lớp trừu tượng biểu diễn thành phần lớp chứa chúng Lớp xác định thao tác truy nhập quản lý Tóm lại ta tưởng tượng mẫu composite trường hợp thư mục tập tin máy tính, thư mục chứa thư mục khác tập tin, với phần phân tích mẫu composite bên dưới, thư mục component file thư mục Leaf b) Định nghĩa: Composite mẫu thiết kế dùng để tạo đối tượng cấu trúc để biểu diễn hệ thống phân lớp: phận – toàn Composite cho phép client tác động đến đối tượng thành phần đối tượng cách thống c) Sơ đồ UML: 18 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Phân tích nguyên lý sáng tạo mẫu thiết kế hướng đối tượng Component (DrawingElement): khai báo giao diện cho đối tượng khối kết tập Cài đặt phương thức mặc định cho giao diện chung lớp cách phù hợp Khai báo giao diện cho việc truy cập quản lý thành phần Định nghĩa giao diện cho việc truy cập đối tượng cha thành phần theo cấu trúc đệ quy cài đặt cách phù hợp Leaf (PrimitiveElement): đại diện cho đối tượng nút khối kết tập Một nút khơng có Định nghĩa hành vi cho đối tượng nguyên thuỷ khối kết tập Composite (CompositeElement): định nghĩa hành vi cho thành phần mà có Lưu trữ thành phần Cài đặt toán tử quan hệ giao diên thành phần Client (CompositeApp): vận dụng đối tượng khối kết tập thông qua giao diện thành phần d) Nguyên lý sáng tạo mẫu: Với hình tượng thư mục tập tin mẫu Composite ta thấy nguyên lý sáng tạo “chứa trong” vận dụng phát huy hiệu tốt trường hợp cần thiết Một đối tượng đặt bên đối tượng khác thân lại chứa đối tượng thứ ba nội dung nguyên lý “chứa trong” áp dụng mẫu Composite Proxy: a) Vấn đề đặt ra: Lý để điều khiển truy nhập tới đối tượng làm theo toàn trình tạo khởi đầu tận thực cần sử dụng nó.Trong trường hợp ta nên dùng mẫu thiết kế proxy Proxy ứng dụng nơi mà cần có tham chiếu tới đối tượng linh hoạt hơn, tinh xảo so với việc sử dụng trỏ đơn giản 19 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Phân tích nguyên lý sáng tạo mẫu thiết kế hướng đối tượng Sau vài trường hợp thơng thường proxy vận dụng: - Một remote proxy cung cấp biểu diễn (một mẫu) cục cho đối tượng không gian địa khác - Một virtual proxy tạo đối tượng có chi phí cao theo u cầu - Một protection proxy điều khiển việc truy nhập đối tượng gốc Các protection proxy hữu ích đối tượng có quyền truy nhập khác - Một smart reference thay cho trỏ rỗng cho phép thực chức thêm vào đối tượng truy nhập Các trường hợp sử dụng điển hình: + Đếm số tham chiếu tới đối tượng thực, tự động giải phóng có khơng nhiều tham chiếu + Tải đối tượng liên tục vào nhớ tham chiếu lần + Kiểm tra đối tượng thực có khóa hay khơng trước bị truy nhập để đảm bảo khơng đối tượng khác thay đổi b) Định nghĩa: Cung cấp đại diện cho đối tượng khác để điều khiển việc truy nhập c) Sơ đồ UML: 20 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Phân tích nguyên lý sáng tạo mẫu thiết kế hướng đối tượng Proxy (MathProxy): trì tham chiếu proxy truy cập vào đối tượng thực Proxy tham khả đến chủ thể giao diện RealSubject Subject Cung cấp giao diện xác định Subject để proxy thay cho đối tượng thực Điều khiển truy cập tới đối tượng thực chịu trách nhiệm tạo xố Trong nhiệm vụ khác phụ thuộc vào loại proxy: + Remote proxies chịu trách nhiệm cho việc mã hoá yêu cầu tham số để truyền u cầu mã hố cho chủ thể không gian địa khác + Virtual proxies thêm phần thơng tin đệm chủ thể thực để chúng trì hỗn truy nhập + Protection proxies kiểm tra đối tượng gọi có yêu cầu quyền truy nhập để thực yêu cầu Subject (IMath): định nghĩa giao diện chung cho chủ thể thực Proxy để proxy sử dụng nơi mà RealSubject mong đợi RealSubject (Math): định nghĩa đối tượng thực mà proxy đại diện d) Nguyên lý sáng tạo mẫu: Nguyên tắc sử dụng trung gian thể rõ rệt mẫu Proxy Tất việc truy cập client thơng qua proxy, đảm bảo tính an tồn, trả kết theo người viết proxy mong muốn, đối tượng client truy cập thủ tục cách vận hành biết nhận thơng tin u cầu Nhóm Behavioral Command: a) Vấn đề đặt ra: Xét ứng dụng Microsoft Pain cài đặt sẵn window, ta dùng thao tác vẽ hình đó, lỡ tay vẽ sai không theo ý muốn dẫ đến việc hình bị sai ta muốn trở lại hình lúc trước thao tác vẽ sai, nói nơm na thao tác Ctrl-Z trở ngược lại 21 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Phân tích nguyên lý sáng tạo mẫu thiết kế hướng đối tượng trạng thái trước đó, thao tác tích hợp nhiều ứng dụng thao tác nhằm đảm bảo tính an tồn làm việc, khơng dẫn đến phần việc hồn hảo trước Và lập trình mẫu Command giải pháp tốt để làm điều b) Định nghĩa: Mẫu Command đóng gói yêu cầu đối tượng, làm cho truyền tham số, lưu trữ history list thao tác theo cách thức khác c) Sơ đồ UML: Command (Command): khai báo giao diện cho việc thực thi thao tác ConcreteCommand (CalculatorCommand): định nghĩa liên kết đối tượng Receiver hành động Cài đặt Execute cách gọi thao tác tương ứng Receiver Client (CommandApp): tạo đối tượng ConcreteCommand thiết lập đối tượng nhận Invoker (User): đề nghị command để thực hiệu yêu cầu Receiver (Calculator): biết cách để thực thao tác kết hợp việc thực yêu cầu 22 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Phân tích nguyên lý sáng tạo mẫu thiết kế hướng đối tượng d) Nguyên lý sáng tạo mẫu: Việc đóng gói yêu cầu đối tượng tương ứng thành đối tượng giúp cho việc truyền lệnh, thao tác linh động đồng thời dễ dàng lần vết lại để trở lại trạng thái lúc trước Nguyên lý dự phòng nguyên lý kết hợp vận dụng vào mẫu 10 Observer: a) Vấn đề đặt ra: Observer pattern dùng trường hợp ta muốn cài đặt lớp - đối tượng phụ thuộc vào đối tượng khác, gọi đối tượng quan sát (observer) đối tượng quan sát (observable) Khi trạng thái đối tượng quan sát thay đổi đối tượng quan sát thực hành động Pattern dùng phổ biến b) Định nghĩa: Observer định nghĩa phụ thuộc 1- nhiều đối tượng để đối tượng thay đổi trạng thái tất phục thuộc nhận biết cập nhật tự động c) Sơ đồ UML: 23 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Phân tích nguyên lý sáng tạo mẫu thiết kế hướng đối tượng Subject (Stock): hểu Observer Một số lượng Observer theo dấu chủ thể Cung cấp giao diện cho việc gắn tách đối tượng Observer ConcreteSubject (IBM): lưu trữ trạng thái ConcreteObserver cần quan tâm Gửi tín hiệu đến observer trạng thái thay đổi Observer (IInvestor): định nghĩa giao diện cập nhật cho đối tượng mà nhận tín hiệu thay đổi chủ thể ConcreteObserver (Investor): trì tham chiếu tới đối tượng ConcreteSubject Lưu trữ trạng thái cố định Cài đặt giao diện cập nhật Observer đẻ giữ trạng thái cố định d) Nguyên lý sáng tạo mẫu: Nguyên lý quan hệ phản hồi sử dụng mẫu này, đối tượng chủ thể có thay đổi đối tượng quan sát báo hiệu để xử lý theo tùy hoàn cảnh 11 Strategy: a) Vấn đề đặt ra: Đầu tiên việc ổn, có đối tượng, chức Một thời gian sau đó, yêu cầu đặc biệt, cần có thêm lớp mới, kế thừa lớp cũ, ghi đè lên phương thức thừa hưởng Chúng ta dàn trải việc xử lý chức qua nhiều lớp Mẫu “Strategy”, mẫu chiến lược nói rằng: cần phải tách phần dễ thay đổi đóng gói chúng vào đối tượng sử dụng đối tượng cần Bây chỉnh sửa mã thơng qua việc tạo “kết hợp” đối tượng Khi chương trình thực thi, cần sử dụng đối tượng mà cần 24 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Phân tích nguyên lý sáng tạo mẫu thiết kế hướng đối tượng b) Định nghĩa: Strategy mẫu thiết kế dùng để định nghĩa họ thuật tốn, đóng gói thuật tốn làm cho chúng có khả thay đổi dễ dàng Strategy cho phép giả thuật tùy biến cách độc lập Client sử dụng c) Sơ đồ UML: Strategy (SortStrategy): khai báo giao diện thông thường tới tất giải thuật hỗ trợ Context sử dụng giao diện để gọi giải thuật định nghĩa ConcreteStrategy ConcreteStrategy (QuickSort, ShellSort, MergeSort): cài đặt giải thuật sử dụng giao diện Strategy Context (SortedList): cấu hình với đối tượng ConcreteStrategy Duy trì tham chiếu tới đối tượng Stategy Có thể định nghĩa giao diện Strategy truy nhập liệu d) Nguyên lý sáng tạo mẫu: Mẫu vận dụng nguyên lý động vào lập trình, cài đặt giải thuật riêng cho đối tượng khác nhau, muốn chuyển qua giải thuật ta cần khởi tạo đối tượng thích hợp để thực thi thuật tốn mong muốn 25 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Phân tích nguyên lý sáng tạo mẫu thiết kế hướng đối tượng 12 Template Method: a) Vấn đề đặt ra: Xét trường hợp môi trường sở liệu, ví dụ cần thực câu truy vấn, việc cần phải làm là: - Tiến hành kết nối tới CSDL (cơ sở liệu) - Thực truy vấn - Tiến hành ngắt kết nối tới CSDL sau truy vấn xong Chúng ta thấy hệ quản trị sở liệu bạn phải thực theo tiến trình Nhưng với hệ quản trị (Oracle, Mysql, MS SQL, ) cần thực khác bước chung tiến trình Trong trường hợp bạn sử dụng Template Method b) Định nghĩa: Template Method mẫu xác định sườn giải thuật thao tác, theo số bước phân lớp Template Method cho phép lớp xác định lại chắn số bước giải thuật bên cấu trúc giải thuật c) Sơ đồ UML: AbstractClass: định nghĩa primitive operation (thao tác nguyên thủy) trừu tượng, thao tác định nghĩa lại lớp cụ thể để thực bước giải thuật Cài đặt template method định nghĩa sườn giải thuật Template 26 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Phân tích nguyên lý sáng tạo mẫu thiết kế hướng đối tượng method gọi thao tác nguyên thủy thao tác định nghĩa AbstractClass số đối tượng khác ConcreteClass: thực thao tác nguyên thủy cài đặt lại nội dung ứng với class riêng thực bước template method d) Nguyên lý sáng tạo mẫu: Việc thay “phụ tùng bên trong” template tùy theo ngữ cảnh, yêu cầu khiến ta hình dung tới nguyên lý linh (năng) động nguyên lý sử dụng vật liệu hợp thành, hai nguyên lý vận dụng để tạo nên mẫu Template Method -Hết - Các tài liệu tham khảo [1] Slide môn học “Phương pháp nghiên cứu khoa học” – GS.TSKH.Hoàng Kiếm [2] Wikipedia : Design Patterns [3] Bài giảng Design Pattern – TS Trần Minh Triết [4] Design patterns Elements of Reusable Object Oriented Software – Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides [5] Báo cáo Design Pattern – www.vi.scribd.com 27 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com ... luanvanchat@agmail.com Phân tích nguyên lý sáng tạo mẫu thiết kế hướng đối tượng Các mẫu thiết kế thơng dụng, có tần suất sử dụng cao: Trong tiểu luận em xin trình bày nội dung, phân tích tính sáng tạo 12 mẫu thiết. .. luanvanchat@agmail.com Phân tích nguyên lý sáng tạo mẫu thiết kế hướng đối tượng c) Nguyên lý sáng tạo mẫu: Ta thấy rõ nét mẫu AbstractFactory hoạt động dựa nguyên lý sáng tạo nguyên lý kết hợp, lớp Abstract... (ColorManager): tạo đối tượng việc yêu cầu nguyên mẫu từ dịng vơ tính d) Ngun lý sáng tạo mẫu: Tạo đối tượng từ đối tượng mẫu có sẵn, thấy rõ mẫu Prototype áp dụng nguyên lý chép (copy) nguyên lý sáng tạo