Báo Cáo Môn Học - Thiết Kế Phần Mềm Hướng Đối Tượng - Đề Tài - ABSTRACT FACTORY

16 33 0
Báo Cáo Môn Học - Thiết Kế Phần Mềm Hướng Đối Tượng - Đề Tài - ABSTRACT FACTORY

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Báo Cáo Môn Học Thiết Kế Phần Mềm Hướng Đối Tượng Đề Tài ABSTRACT FACTORYBáo Cáo Môn Học Thiết Kế Phần Mềm Hướng Đối Tượng Đề Tài ABSTRACT FACTORYBáo Cáo Môn Học Thiết Kế Phần Mềm Hướng Đối Tượng Đề Tài ABSTRACT FACTORYBáo Cáo Môn Học Thiết Kế Phần Mềm Hướng Đối Tượng Đề Tài ABSTRACT FACTORYBáo Cáo Môn Học Thiết Kế Phần Mềm Hướng Đối Tượng Đề Tài ABSTRACT FACTORY

ABSTRACT FACTORY Nội dung trình bày Khái niệm Mục đích Cấu trúc Các thành phần tham gia, ý nghĩa vai trị Tính chất đặc thù Tình áp dụng hệ Ưu khuyết điểm Abstract Factory Các mẫu liên quan Demo ABSTRACT FACTORY Khái niệm Abstract Factory, tên đầy đủ Abstract Factory Pattern design pattern thuộc nhóm kiến tạo (Creational) áp dụng phổ biến thiết kế lập trình Nó cung cấp giao diện có chức tạo tập đối tượng có quan hệ phụ thuộc mà không cần rõ lớp cụ thể thời điểm thiết kế ABSTRACT FACTORY Khái niệm Mẫu thiết kế Abstract Factory đóng gói nhóm lớp đóng vai trò "sản xuất" (Factory) ứng dụng, lớp dùng để tạo đối tượng Các lớp sản xuất có chung giao diện kế thừa từ lớp cha ảo gọi "lớp sản xuất ảo" Người ta gọi Abstract Factory “Factory of factories” ABSTRACT FACTORY Mục đích • Cung cấp giao diện để tạo họ đối tượng phụ thuộc liên quan đến mà khơng cần xác định xác lớp thực • Tạo đối tượng mà khơng cần biết xác kiểu liệu • Giúp mã nguồn bạn trở nên dễ dàng bảo trì có thay đổi ABSTRACT FACTORY Cấu trúc class OOSD AbstractFactory + + Client CreateProductA() CreateProductB() AbstractProductA ProductA2 ConcreteFactory1 + + CreateProductA() CreateProductB() ProductA1 ConcreteFactory2 + + AbstractProductB CreateProductA() CreateProductB() ProductB2 ABSTRACT FACTORY ProductB1 Các thành phần tham gia, ý nghĩa vai trò AbstractFactory: Khai báo dạng interface abstract class chứa phương thức để tạo đối tượng abstract ConcreteFactory: Xây dựng, cài đặt phương thức tạo đối tượng cụ thể AbstractProduct: định nghĩa lớp ảo cho loại đối tượng “sản phẩm” Product: kế thừa từ từ lớp "sản phẩm" ảo AbstractProduct, lớp Product định nghĩa từ đối tượng cụ thể Client: sử dụng giao diện khai báo AbstractFactory AbstractProduct ABSTRACT FACTORY Tính chất đặc thù • Khơng tạo đối tượng mà tạo tập đối tượng liên quan (tạo Factory khác) • Phương thức tạo đối tượng (CreateObject()) không phụ thuộc vào yếu tố đầu vào ABSTRACT FACTORY Tình áp dụng hệ • Tình áp dụng  Một hệ thống nên độc lập với sản phẩm tạo ra, sáng tác, biểu diễn  Một hệ thống nên cấu hình với nhiều dòng sản phẩm  Một họ đối tượng sản phẩm liên quan thiết kế để sử dụng nhau, bạn cần phải thực thi hạn chế  Bạn muốn cung cấp thư viện lớp sản phẩm, bạn muốn để lộ giao diện, không để lộ triển khai họ • Hệ  Nó tách biệt lớp cụ thể  Nó làm cho việc trao đổi nhóm Product dễ dàng  Nó thúc đẩy thống Product  Hỗ trợ loại Product khó ABSTRACT FACTORY Ưu khuyết điểm Abstract Factory • Ưu điểm: – Phát triển thực thi cách độc lập với phần cịn lại ứng dụng thơng qua giao diện chung – Thúc đẩy thống “sản phẩm” • Khuyết điểm: – Khó dự đốn vấn đề phát sinh tương lai – Nếu AbstractProduct không sinh ConcreteProduct khơng theo ý muốn – Rất khó để hỗ trợ loại “sản phẩm” ABSTRACT FACTORY 10 Các mẫu liên quan • Factory Method : sử dụng AbstractFactory class OOSD class OOSD AbstractFactory + + Client CreateProductA() CreateProductB() Product Creator AbstractProductA + + AnOperation() FactoryMethod() ProductA2 ConcreteFactory1 + + ProductA1 ConcreteFactory2 ConcreteProduct CreateProductA() + CreateProductA() CreateProductB() + CreateProductB() «instantiate» AbstractProductB ConcreteCreator + FactoryMethod() return new ConcreteProduct ProductB2 ABSTRACT FACTORY ProductB1 11 Các mẫu liên quan • Singleton : thường sử dụng ConcreteFactory class OOSD class OOSD AbstractFactory + + Client CreateProductA() CreateProductB() AbstractProductA Singleton ConcreteFactory1 + + CreateProductA() CreateProductB() singletonData uniqueInstanceProductA2 ProductA1 + GetSingletonData() AbstractProductB CreateProductA() +CreateProductB() Instance() return uniqueInstance + SingletonOperation() ConcreteFactory2 + + ProductB2 ABSTRACT FACTORY ProductB1 12 Các mẫu liên quan • Prototype : sử dụng AbstractProduct class OOSD class OOSD AbstractFactory + + Client CreateProductA() CreateProductB() Client -prototype + Operation() p= prototype->Clone() Prototype AbstractProductA + Clone() ProductA2 ConcreteFactory1 + + CreateProductA() CreateProductB() ProductA1 ConcreteFactory2 + + AbstractProductB CreateProductA() CreateProductB() ConcretePrototype1 ConcretePrototype2 + Clone() return copy of ProductB2 self + Clone() ProductB1 return copy of self ABSTRACT FACTORY 13 Demo Canivore Herbervore Plant Canivore ABSTRACT FACTORY Herbervore Plant 14 class OOSD UML ContinentFactory + + + CreateCarnivore(): Carnivore CreateHerbivore(): Herbivore CreatePlant(): Plant AfricaFactory + + + AnimalWorld CreateCarnivore(): Carnivore CreateHerbivore(): Herbivore CreatePlant(): Plant + + - _carnivore: string = "" _herbivore: string = "" carnivore: Carnivore herbivore: Herbivore plant: Plant + + AnimalWorld(ContinentFactory) RunFoodChain(): void AmericaFactory + + + CreateCarnivore(): Carnivore CreateHerbivore(): Herbivore CreatePlant(): Plant Wolf + -herbivore -plant + Grass -carnivore Herbivore Plant + Eat(Plant): string ABSTRACT FACTORY Carnivore Eat(Plant): string Bison Tree Eat(Herbivore): string + Lion Wildebeest + Eat(Plant): string Eat(Herbivore): string + Eat(Herbivore): string 15 THANK YOU FOR YOU ATTENTION ABSTRACT FACTORY

Ngày đăng: 05/09/2023, 00:36

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan