1. Trang chủ
  2. » Luận Văn - Báo Cáo

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 34 0

Đ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

Thông tin cơ bản

Tiêu đề Abstract Factory
Trường học Đại Học Bách Khoa Hà Nội
Chuyên ngành Thiết Kế Phần Mềm Hướng Đối Tượng
Thể loại Báo Cáo Môn Học
Năm xuất bản 2023
Thành phố Hà Nội
Định dạng
Số trang 16
Dung lượng 1,22 MB
File đính kèm Abstract Factory.zip.zip (5 MB)

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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

Trang 1

ABSTRACT FACTORY

Trang 2

Nội dung trình bày

1 Khái niệm

2 Mục đích

3 Cấu trúc

4 Các thành phần tham gia, ý nghĩa và vai trò

5 Tính chất đặc thù

6 Tình huống áp dụng và các hệ quả

7 Ưu và khuyết điểm của Abstract Factory

8 Các mẫu liên quan

9 Demo

Trang 3

1 Khái niệm

Abstract Factory, tên đầy đủ Abstract Factory Pattern là

một trong các design pattern thuộc nhóm kiến tạo (Creational) được áp dụng khá phổ biến trong khi thiết kế

và lập trình Nó cung cấp một giao diện có chức năng tạo

ra một tập các đối tượng có quan hệ hoặc phụ thuộc nhau mà không cần chỉ rõ các lớp cụ thể nào tại thời điểm thiết kế

Trang 4

1 Khái niệm

Mẫu thiết kế Abstract Factory đóng gói một nhóm những lớp đóng vai trò "sản xuất" (Factory) trong ứng dụng, đây là những lớp được dùng để tạo ra các đối tượng Các lớp sản xuất này

có chung một giao diện được kế thừa từ một lớp cha thuần ảo gọi là "lớp sản xuất ảo"

Người ta còn gọi Abstract Factory là “Factory of

factories”

Trang 5

2 Mục đích

• Cung cấp một giao diện để tạo ra các họ của các đối

tượng phụ thuộc hoặc liên quan đến nhau mà không cần xác định chính xác các lớp thực hiện

• Tạo ra đối tượng mà không cần biết chính xác kiểu dữ

liệu

• Giúp mã nguồn của bạn trở nên dễ dàng bảo trì nếu

có sự thay đổi

Trang 6

3 Cấu trúc

class OOSD

AbstractFactory

+ CreateProductA() + CreateProductB()

ConcreteFactory1

+ CreateProductA() + CreateProductB()

ConcreteFactory2

+ CreateProductA() + CreateProductB()

AbstractProductA

AbstractProductB

Client

Trang 7

4 Các thành phần tham gia, ý nghĩa và vai trò

AbstractFactory: Khai báo dạng interface hoặc abstract class chứa các phương

thức để tạo ra các đối tượng abstract

ConcreteFactory: Xây dựng, cài đặt các phương thức tạo các đối tượng cụ thể.

AbstractProduct: định nghĩa một lớp ảo cho một loại đối tượng “sản phẩm”

Product: kế thừa từ từ lớp "sản phẩm" ảo AbstractProduct, các lớp Product định

nghĩa từ đối tượng cụ thể.

Client: sử dụng các giao diện được khai báo bởi AbstractFactory và

AbstractProduct.

Trang 8

5 Tính chất đặc thù

• Không tạo chỉ 1 đối tượng mà tạo một tập các đối tượng liên quan (tạo ra một Factory con 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

Trang 9

6 Tình huống áp dụng và các hệ quả

• Tình huống áp dụng

sáng tác, và biểu diễn.

sử dụng cùng nhau, và bạn cần phải thực thi các hạn chế này.

để lộ giao diện, không để lộ triển khai của họ.

• Hệ quả

Trang 10

7 Ưu và khuyết điểm của Abstract Factory

• Ưu điểm:

– Phát triển thực thi một cách độc lập với các phần còn lại của ứng dụng thông qua giao diện chung.

– Thúc đẩy sự thống nhất giữa các “sản phẩm”.

• Khuyết điểm:

– Khó dự đoán những vấn đề phát sinh trong tương lai.

– Nếu AbstractProduct không đúng thì sẽ sinh ra các ConcreteProduct không

theo ý muốn.

– Rất khó để hỗ trợ một loại “sản phẩm” mới.

Trang 11

8 Các mẫu liên quan

• Factory Method : sử dụng trong AbstractFactory

class OOSD

Product

ConcreteProduct

Creator

+ AnOperation()

+ FactoryMethod()

ConcreteCreator

+ FactoryMethod()

return new ConcreteProduct

«instantiate»

class OOSD

AbstractFactory

+ CreateProductA() + CreateProductB()

ConcreteFactory1

+ CreateProductA() + CreateProductB()

ConcreteFactory2

+ CreateProductA() + CreateProductB()

AbstractProductA

AbstractProductB

Client

Trang 12

8 Các mẫu liên quan

• Singleton : thường sử dụng trong ConcreteFactory.

class OOSD

Singleton

- singletonData

- uniqueInstance

+ GetSingletonData() + Instance()

return uniqueInstance

+ SingletonOperation()

class OOSD

AbstractFactory

+ CreateProductA() + CreateProductB()

ConcreteFactory1

+ CreateProductA() + CreateProductB()

ConcreteFactory2

+ CreateProductA() + CreateProductB()

AbstractProductA

ProductA2 ProductA1

AbstractProductB

ProductB2 ProductB1

Client

Trang 13

8 Các mẫu liên quan

• Prototype : sử dụng trong AbstractProduct.

class OOSD

Prototype

+ Clone()

ConcretePrototype1

+ Clone()

return copy of self

ConcretePrototype2

+ Clone()

return copy of self

Client

+ Operation()

p = prototype->Clone()

-prototype

class OOSD

AbstractFactory

+ CreateProductA() + CreateProductB()

ConcreteFactory1

+ CreateProductA() + CreateProductB()

ConcreteFactory2

+ CreateProductA() + CreateProductB()

AbstractProductA

ProductA2 ProductA1

AbstractProductB

ProductB2 ProductB1

Client

Trang 14

9 Demo

Herbervore Canivore Plant Canivore Herbervore Plant

Trang 15

class OOSD

AfricaFactory

+ CreateCarnivore(): Carnivore + CreateHerbivore(): Herbivore + CreatePlant(): Plant

AmericaFactory

+ CreateCarnivore(): Carnivore + CreateHerbivore(): Herbivore + CreatePlant(): Plant

AnimalWorld

+ _carnivore: string = ""

+ _herbivore: string = ""

- carnivore: Carnivore

- herbivore: Herbivore

- plant: Plant + AnimalWorld(ContinentFactory) + RunFoodChain(): void

Bison

+ Eat(Plant): string

Carnivore

+ Eat(Herbivore): string

ContinentFactory

+ CreateCarnivore(): Carnivore + CreateHerbivore(): Herbivore + CreatePlant(): Plant

Grass

Herbivore

+ Eat(Plant): string

Lion

+ Eat(Herbivore): string

Plant

+ Eat(Plant): string

Wolf

+ Eat(Herbivore): string

Trang 16

THANK YOU FOR YOU ATTENTION

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

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w