1. Trang chủ
  2. » Giáo Dục - Đào Tạo

ĐỒ án đề tài tìm HIỂU lý THUYẾT và các mẫu THIẾT kế PHẦN mềm có TRONG SPRING FRAMEWORK

62 5 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

Định dạng
Số trang 62
Dung lượng 1,05 MB

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

Nội dung

Các mẫu thiết kế Java EE này cung cấp các hướng dẫn giải pháp được thử nghiệm theo thời gian và các thực tiễn tốt nhất để tương tác đối tượng trong các lớp khác nhau của ứng dụng Java EE

Trang 1

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT

TP HỒ CHÍ MINH KHOA ĐÀO TẠO CHẤT LƯỢNG CAO

BÁ́O CÁ́O ĐỒ ÁN

ĐỀ TÀI:

TÌM HIỂU LÝ THUYẾT VÀ̀ CÁ́C

MẪU THIẾT KẾ PHẦN MỀM CÓ

TRONG SPRING FRAMEWORK

Giảng viên hướng dẫn : Nguyễn Minh Đạo

Trang 2

Thực hiện đề tài: Nhóm 09

STT Họ tên SV

1 Quách Diệu Khánh

MSSV 191102 26 191102 88 191101 57 191101 96 Tên đề tài: Tìm hiểu Spring Framework và̀ các mẫu thiết kế phần mềm có trong spring framework

Thời gian thực hiện: : 01/04/2022 – 20/05/2022

NHẬN XÉT CỦA GIẢNG VIÊN

Trang 3

Tp Hồ Chí Minh, ngày …., tháng …., năm 2022

Giảng viên hướng dẫn

Nguyễn Minh Đạo

2 Overview of GOF Design Patterns - Core Design Patterns 7

Giới thiệu về sức mạnh của các mẫu Design Patterns 7

3 Consideration of Structural and Behavioral Patterns 18

4 Wiring Beans using the Dependency Injection Pattern 34

Types of dependency injection patterns 34Constructor-based dependency injection 34Setter-based dependency injection 35Configuring the dependency injection pattern with Spring 36Annotating beans for autowiring Lookup-method injection pattern 36Implementing the Abstract Factory Pattern in Spring 37Implementation of FactoryBean interface in Spring 37

Trang 6

LỜI CẢM ƠN

Chúng em xin gửi lời cảm ơn chân thành đến Khoa Đào tạo Chất lượng cao, Trường Đại học Sư phạm Kỹ thuật TP.HCM đã tạo điều kiện thuận lợi cho chúng em học tập và hoàn thành đề tài báo cáo này Đặc biệt, chúng em xin bày tỏ lòng biết ơn sâu sắc đến thầy Nguyễn Minh Đạo đã truyền đạt kiến thức và hướng dẫn chúng em trong quá trình hoàn thành báo cáo.

Nhóm em đã cố gắng vận dụng những kiến thức đã học được trong học kỳ qua để hoàn thành bài báo cáo Nhưng do kiến thức hạn chế và không có nhiều kinh nghiệm thực tiễn nên khó tránh khỏi những thiếu sót trong quá trình nghiên cứu và trình bày Rất kính mong sự góp ý của thầy để bài báo cáo của nhóm em được hoàn thiện hơn.

Một lần nữa, nhóm em xin trân trọng cảm ơn sự quan tâm giúp đỡ của thầy đã giúp

đỡ nhóm em trong quá trình thực hiện bài báo cáo này.

Xin trân trọng cảm ơn!

Trang 7

2 Overview of GOF Design Patterns -

Core Design Patterns

1 Giới thiệu về sức mạnh của các mẫu Design Patterns

Trên thực tế, cụm từ Design Pattern không liên quan đến bất kỳ ngôn

ngữ lập trình nào và nó cũng không cung cấp các giải pháp cụ thể cho các

vấn đề về ngôn ngữ, là một khái niệm kỹ thuật phần mềm mô tả các giải

pháp định kỳ cho các vấn đề phổ biến trong thiết kế phần mềm Các mẫu

này cũng đại diện cho các thực tiễn tốt nhất được sử dụng bởi các nhà phát

triển phần mềm có kinh nghiệm

Một mô hình thiết kế có ba đặc điểm chính:

+ Mẫu thiết kế dành riêng cho một kịch bản cụ thể hơn là một nền tảng Vìvậy, bối cảnh của nó là điều kiện xung quanh mà vấn đề tồn tại Bối cảnh phải đượcghi lại trong khuôn mẫu

+ Các mẫu thiết kế đã được phát triển để cung cấp các giải pháp tốt nhất chomột số vấn đề nhất định gặp phải trong quá trình phát triển phần mềm.Vì vậy, điềunày nên được giới hạn bởi bối cảnh mà nó đang được xem xét

+ Các mẫu thiết kế là phương thuốc cho các vấn đề đang được xem

xét

2 Tổng quan về mô hình thiết kế GOF

Tác giả của cuốn sách có tiêu đề là GOF này là nhóm 4 người gồm

có Erich Gamma, Richard Helm, Ralph Johnson và John Vlissides Vấn đề

trong cuốn sách liên quan đến các yếu tố của phần mềm hướng đối tượng

Trang 8

có thể tái sử dụng, đã khởi xướng khái niệm về các mẫu thiết kế trong phát

triển phần mềm

Các mẫu Gang of Four (GoF) gồm 23 mẫu thiết kế phần mềm cổ

điển cung cấp các giải pháp cho các vấn đề phổ biến trong thiết kế phần

mềm Các mẫu này được phân loại thành hai loại chính:

+ Core Design Patterns

+ J2EE Design Patterns

Core Design Patterns được chia thành ba loại chính của mẫu thiết kế,

như sau:

+ Creational Design Pattern: các mẫu trong danh mục này cung cấp mộtcách để xây dựng các đối tượng khi các nhà thầu sẽ không phục vụ mục đích củabạn Logic sáng tạo của các đối tượng được ẩn Các chương trình dựa trên các mẫunày linh hoạt hơn trong việc quyết định tạo đối tượng theo yêu cầu của bạn và cáctrường hợp sử dụng của bạn cho ứng dụng

+ Structural Design Pattern: các mẫu trong danh mục này liên quan đếnthành phần của các lớp hoặc đối tượng Trong ứng dụng doanh nghiệp, có hai kỹthuật thường được sử dụng để tái sử dụng chức năng trong các hệ thống hướng đốitượng: một là kế thừa lớp và hai là khái niệm thành phần đối tượng của thừa kế háiniệm thành phần đối tượng của kế thừa được sử dụng để soạn thảo giao diện và xácđịnh các cách để soạn thảo các đối tượng để có được các chức năng mới

+ Behavioral Design Pattern: các mẫu trong danh mục này, đặc trưng chocác cách mà các lớp hoặc đối tượng tương tác và phân phối trách

8

TIEU LUAN MOI download : skknchat123@gmail.com

Trang 9

nhiệm Các mẫu thiết kế này đặc biệt quan tâm đến giao tiếp giữa các đối

tượng Mô hình thiết kế hành vi được sử dụng để kiểm soát và giảm luồng

ứng dụng phức tạp trong ứng dụng doanh nghiệp

Hơn nữa, JEE Design patterns, là loại chính khác của các mẫu thiết

kế Thiết kế ứng dụng có thể được đơn giản hóa vô cùng bằng cách áp

dụng các mẫu thiết kế Java EE Các mẫu thiết kế của Java EE đã được ghi

lại trong các bản thiết kế Java của Sun

Các mẫu thiết kế Java EE này cung cấp các hướng dẫn giải pháp

được thử nghiệm theo thời gian và các thực tiễn tốt nhất để tương tác đối

tượng trong các lớp khác nhau của ứng dụng Java EE Các mẫu thiết kế

này đặc biệt quan tâm đến các lớp được liệt kê sau:

+ Design pattern at the presentation layer

+ Design pattern at the business layer

+ Design pattern at the integration layer

3 Creational design patterns

Các mẫu thiết kế sáng tạo( Creational design patterns ) được liên kết

với phương pháp tạo đối tượng Logic tạo của đối tượng được ẩn cho người

gọi của đối tượng này

Cách này không phù hợp với một số trường hợp, bởi vì nó là một

cách tạo mã cứng để tạo ra một đối tượng Nó cũng không phải là một thực

tiễn tốt nhất để tạo ra một đối tượng bởi vì đối tượng có thể được thay đổi

theo bản chất của chương trình

Trang 10

Do đó, mô hình thiết kế sáng tạo( Creational design patterns ) cung

cấp sự linh hoạt để tạo ra một đối tượng theo bản chất của chương trình

Factory design pattern

Xác định một giao diện để tạo một đối tượng, nhưng hãy để các lớp

con quyết định lớp nào sẽ khởi tạo Phương pháp này cho phép một lớp trì

hoãn việc khởi tạo cho các lớp con

Theo mẫu thiết kế nhà máy(Factory) này, ta nhận được một đối

tượng của một lớp mà không phơi bày logic cơ bản cho máy khách(client)

Nó gán một đối tượng mới cho người gọi bằng cách sử dụng một giao diện

chung hoặc lớp trừu tượng Điều này có nghĩa là mô hình thiết kế che giấu

logic thực tế của việc thực hiện một đối tượng, cách tạo nó và lớp nào khởi

tạo nó Chịu trách nhiệm cho các nhiệm vụ này Mô hình nhà máy(Factory)

là một trong những mẫu thiết kế được sử dụng nhiều nhất trong Java

Những lợi ích của mẫu thiết kế nhà̀ máy(Factory)

Mẫu nhà máy thúc đẩy khớp nối lỏng lẻo giữa các thành phần hoặc

lớp hợp tác bằng cách sử dụng các giao diện thay vì ràng buộc các lớp

dành riêng cho ứng dụng vào mã ứng dụng bằng cách sử dụng mẫu này

Ta có thể thực hiện một đối tượng của các lớp thực hiện giao diện,

khi chạy vòng đời đối tượng được quản lý bởi nhà máy được thực hiện bởi

mô hình này

Một số vấn đề chung nên sử dụng mẫu thiết kế nà̀y

+ Mẫu này loại bỏ gánh nặng cho nhà phát triển để tạo và quản lý các đối tượng

Trang 11

+ Mẫu này loại bỏ sự kết hợp chặt chẽ giữa các thành phần cộng tác vì một thành phần không biết các lớp con nào sẽ được yêu cầu để tạo.

+ Tránh mã cứng để tạo một đối tượng của lớp

Thực thi mẫu nhà̀ máy(Factory) và̀o Spring Framework

Spring Framework sử dụng mẫu này để thực thi container(nơi chứa

đựng tất cả các beans) sử dụng giao diện BeanFactory và

ApplicationContext

Spring container hoạt động dựa trên mô hình nhà máy để tạo ra các

beans cho ứng dụng Spring và cũng như quản lý vòng đời của mỗi beans

BeanFactory và ApplicationContext là các giao diện nhà máy và

Spring có rất nhiều lớp thực hiện Phương pháp GetBean () là phương pháp

nhà máy cung cấp beans sao cho phù hợp

Abstract factory design pattern

Cung cấp một giao diện để tạo các mối liên hệ giữa các đối tượng

liên quan hoặc phụ thuộc mà không cần chỉ định các lớp cụ thể của nó

Đây là một mô hình thiết kế cao cấp so với mô hình thiết kế phương

pháp nhà máy Theo mẫu thiết kế này, bạn chỉ cần xác định một giao diện

hoặc lớp trừu tượng để tạo một đối tượng phụ thuộc có liên quan mà không

cần chỉ định lớp con cụ thể của nó

Trong mô hình nhà máy trừu tượng, một giao diện chịu trách nhiệm

tạo ra một nhà máy gồm các đối tượng liên quan mà không chỉ định rõ

ràng các lớp của chúng Mỗi nhà máy được tạo ra có thể cung cấp cho các

đối tượng theo mẫu nhà máy

Trang 12

Những lợi ích của mô hình nhà̀ máy trừu tượng(Abstract

factory)

+ Cung cấp khớp nối lỏng lẻo giữa các thành phần liên quan Nó cũng cách

ly mã máy khách(client) với các lớp cụ thể

+ Mô hình thiết kế này là một thiết kế cấp cao hơn mô hình nhà máy

+ Mẫu này cung cấp tính nhất quán tốt hơn trong thời gian xây dựng của cácđối tượng trên toàn ứng dụng

+ Mô hình này dễ dàng hoán đổi các thành phần liên quan

Một số vấn đề chung nên sử dụng mẫu thiết kế

nà̀y(Abstract factory)

Khi bạn thiết kế một mẫu nhà máy để tạo đối tượng trong ứng dụng

của bạn, có những lúc bạn muốn một tập hợp các đối tượng liên quan cụ

thể được tạo với các ràng buộc nhất định và áp dụng logic mong muốn trên

các đối tượng liên quan trong ứng dụng của bạn Bạn có thể đạt được thiết

kế này bằng cách tạo một nhà máy khác bên trong nhà máy cho một bộ các

đối tượng liên quan và áp dụng các ràng buộc cần thiết Bạn cũng có thể

lập trình logic cho một tập hợp các đối tượng liên quan

Khi bạn muốn tùy chỉnh logic khởi tạo của các đối tượng liên quan,

thì bạn có thể sử dụng mẫu thiết kế này

Thực thi mẫu nhà̀ máy trừu tượng(Abstract Factory) và̀o

Spring Framework

Trong Spring Framework, giao diện FactoryBean dựa trên mô hình

thiết kế Abstract Factory, Spring cung cấp nhiều phương thức thực thi giao

diện này, chẳng hạn như là ProxyFactoryBean, Jndi Factory Bean,

Trang 13

LocalContainerEntityManagerFactoryBean, và một số khác

Một FactoryBean cũng hữu ích để giúp xây dựng đối tượng Spring

mà bản thân nó không dễ dàng tự xây dựng được.Thường thì điều này

được sử dụng để xây dựng các đối tượng phức tạp có nhiều phụ thuộc Nó

cũng có thể được sử dụng khi bản thân logic xây dựng rất biến động và

phụ thuộc vào cấu hình

Singleton design pattern

Đảm bảo một lớp chỉ có một trường hợp và cung cấp một điểm truy

cập toàn cầu cho nó

Mẫu singleton này là một trong những mẫu thiết kế đơn giản nhất

trong Java.Theo mẫu thiết kế này, lớp cung cấp cùng một đối tượng cho

mỗi cuộc gọi-nghĩa là nó đang hạn chế việc khởi tạo một lớp cho một đối

tượng và cung cấp một điểm truy cập toàn cầu vào lớp đó

Vì vậy, lớp sẽ chịu trách nhiệm tạo một đối tượng và cũng đảm bảo

rằng chỉ nên tạo một đối tượng cho mỗi cuộc gọi của khách hàng(client)

cho đối tượng này

Lớp này không cho phép khởi tạo trực tiếp một đối tượng của lớp

này Nó cho phép có được một thể hiện đối tượng chỉ bằng một phương

thức tĩnh được tiếp xúc

Điều này rất hữu ích khi chính xác một đối tượng là cần thiết để phối

hợp các hành động trên hệ thống Bạn có thể tạo một mẫu duy nhất bằng

hai biểu mẫu, như được liệt kê ở đây:

Trang 14

+ Early instantiation: Tạo phiên bản vào thời điểm tải.

+ Lazy instantiation: Tạo phiên bản khi được yêu cầu

Những lợi ích của mô hình Singleton

+ Nó cung cấp quyền truy cập bộ điều khiển vào các lớp quan trọng (thường

là đối tượng nặng), chẳng hạn như lớp kết nối cho DB và lớp sessionFactory trongHibernate

+ Nó giúp tiết kiệm hàng đống bộ nhớ

+ Nó là một thiết kế rất hiệu quả cho môi trường đa luồng

+ Nó linh hoạt hơn vì lớp kiểm soát quá trình khởi tạo và lớp có tính linh hoạt để thay đổi quá trình khởi tạo

+ Nó có độ trễ thấp

Một số vấn đề chung nên sử dụng mẫu thiết kế

nà̀y(Singleton)

Mẫu Singleton chỉ giải quyết được một vấn đề nếu bạn có một tài

nguyên chỉ có thể có một thể hiện duy nhất và bạn cần quản lý trường hợp

đó, thì bạn cần một singleton

Thông thường, nếu muốn tạo kết nối cơ sở dữ liệu với cấu hình đã

cho trong môi trường phân phối và đa luồng, nếu không tuân theo thiết kế

singleton thì mọi luồng có thể tạo kết nối cơ sở dữ liệu mới với một đối

tượng cấu hình khác

Với mẫu singleton, mỗi luồng có cùng đối tượng kết nối cơ sở dữ

liệu với cùng một đối tượng cấu hình trên hệ thống Nó chủ yếu được sử

dụng trong các ứng dụng đa luồng và cơ sở dữ liệu Nó được sử dụng trong

ghi nhật ký, lưu trữ, nhóm luồng, cài đặt cấu hình,

Trang 15

Thực thi mẫu Singleton và̀o Spring Framework

Spring Framework cung cấp một phạm vi singleton bean như là mô hìnhsingleton, nó tương tự mẫu singleton, nhưng không giống hẳn singleton trong java.Theo mẫu singleton, một phạm vi bean trong Spring framework có nghĩa là một beanduy nhất trên mỗi container và mỗi bean Nếu bạn xác định một bean cho một lớp cụthể trong một Spring container, thì sẽ tạo một và chỉ một thể hiện của lớp được xácđịnh bởi định nghĩa bean đó

Prototype design pattern

Chỉ định loại đối tượng để tạo bằng cách sử dụng một thể hiện nguyên

mẫu và tạo các đối tượng mới bằng cách sao chép nguyên mẫu này

Mẫu này được sử dụng để tạo các đối tượng bằng cách sử dụng

phương thức nhân bản của các đối tượng Nó được xác định bởi một ví dụ

nguyên mẫu Trong ứng dụng doanh nghiệp, việc tạo đối tượng là tốn kém

về mặt tạo và khởi tạo các thuộc tính ban đầu của các đối tượng Nếu một

loại đối tượng như vậy đã có trong tay, thì ta sẽ tìm mẫu prototype này

Bạn chỉ cần sao chép một đối tượng tương tự hiện có thay vì tạo nó, đó là

tốn thời gian

Mẫu này liên quan đến việc thực hiện giao diện nguyên mẫu, nó tạo

ra một bản sao của đối tượng hiện tại Mẫu này được sử dụng khi tạo trực

tiếp đối tượng là tốn kém

Những lợi ích của mô hình Prototype

+ Giảm thời gian để tạo các đối tượng tốn thời gian

+ Mô hình này làm giảm lớp con

+ Mẫu này thêm và xóa các đối tượng trong thời gian chạy

+ Mẫu này cấu hình ứng dụng với các lớp một cách linh hoạt

Trang 16

Builder design pattern

Tách biệt việc xây dựng một đối tượng phức tạp khỏi biểu diễn của

nó để quá trình xây dựng tương tự có thể tạo ra các biểu diễn khác nhau

Logic và quá trình tạo đối tượng phải là chung để bạn có thể sử dụng

nó để tạo các triển khai cụ thể khác nhau của cùng loại đối tượng Mẫu này

đơn giản hóa việc xây dựng các đối tượng phức tạp và nó ẩn các dựng

được sử dụng để xây dựng một đối tượng phức tạp từng bước và cuối cùng

nó sẽ trả về đối tượng hoàn chỉnh chi tiết về cấu trúc của đối tượng từ mã

người gọi máy khách

Khi bạn đang sử dụng mẫu này, hãy nhớ rằng bạn phải xây dựng nó

từng bước một, điều đó có nghĩa là bạn phải chia đăng nhập xây dựng đối

tượng thành nhiều giai đoạn, không giống như các mẫu khác, chẳng hạn

như nhà máy trừu tượng và mẫu nhà máy, mà đối tượng trong một bước

duy nhất

Những lợi ích của mô hình Prototype

+ Mô hình này cung cấp cho bạn sự cô lập hoàn toàn giữa việc xây dựng và biểu diễn của một đối tượng

+ Mẫu này cho phép bạn xây dựng đối tượng theo nhiều giai đoạn, vì vậy bạn có quyền kiểm soát nhiều hơn đối với quy trình xây dựng

+ Mẫu này cung cấp sự linh hoạt để thay đổi biểu diễn bên trong của đối tượng

Thực thi mẫu Singleton và̀o Spring Framework

Spring Framework thực hiện mô hình thiết kế xây dựng(builder) một

cách minh bạch trong một số chức năng Các lớp sau dựa trên mẫu thiết kế

Trang 17

xây dựng(builder) trong Spring Framework:

Trong một ứng dụng doanh nghiệp, bạn có thể áp dụng mẫu trình xây

dựng trong đó việc tạo đối tượng đã được thực hiện bằng cách sử dụng

nhiều bước Trong mỗi bước, bạn thực hiện một phần của quy trình Trong

quy trình này, bạn đặt một số tham số cần thiết và một số tham số tùy chọn

và sau bước cuối cùng, bạn sẽ nhận được một đối tượng phức tạp

Mẫu builder là một mẫu thiết kế phần mềm tạo đối tượng Mục đích

là để trừu tượng các bước xây dựng để các triển khai khác nhau của các

bước này có thể xây dựng các biểu diễn khác nhau của các đối tượng

Thông thường, mẫu xây dựng được sử dụng để xây dựng các sản phẩm

theo mẫu tổng hợp

Trang 18

3 Consideration of Structural and Behavioral

Patterns

Tiếp tục các phần tiếp theo của GOF design pattern đó là structural and behavioral design patterns

1 Phân tích cốt lõi của mẫu thiết kế

Structural design pattern: các mẫu trong danh mục này sẽ đảm

nhiệm các thành phần của các class hoặc các đối tượng

● Trong phần mềm doanh nghiệp thì có 2 kĩ thuật cơ bản để tái sử dụng các chức năng của hệ thống hướng đối tượng đó là:

o Inheritance (Kế thừa): kế thừa các trạng thái và biểu hiện của

class khác

o Composition: Được sử dụng như là các thành phần của các đối

tượng khác như một biến của class, Thành phần hóa các đối tượng để nhận các tính năng

Behavioral design pattern: các mẫu trong danh mục này nêu rõ đặc

điểm và các cách thức để các class và object tương tác với nhau và đóng gópnhiệm vụ Các mẫu này xác định các phương thức để mà giao tiếp giữa cácobject với nhau trong phần mềm Giảm thiểu độ

phức tạp của luồng điều khiển, đóng gói các thuật toán và linh hoạt trong việc chọn 1 trong số các thuật toán để sử dụng

Trang 19

- 2 class không thể làm việc chung do không tương thích interface

- Mẫu adaper được sử dụng khi 2 interface trong phần mềm không tương thích chức năng nhưng vẫn có thể tích hợp với nhau được

Lợi ích của mẫu Adapter

- Cho phép giao tiếp và tương tác được với 2 hay nhiều object không tương thích nhau

- Phát triển khả năng tái sử dụng các chức năng đã triển khai trong phần mềm

Yêu cầu chung khi dùng mẫu Adapter

- Phải có sẵn class với interface không tương thích

- Dùng adapter pattern khi muốn tạo 1 class mà có thể kết hợp với các class khác không tương thích nhau

- 1 object của adapter có thể mô phỏng interface của class cha

Triển khai mẫu Adapter trên Spring Framework

- Spring framework sử dụng các mẫu adapter để triển khai ra nhiều chức năng tách biệt của framework

- The Target Interface: giao diện cho clients

Trang 20

- The Adapter class: Là class bọc bên ngoài triển khai các interface mong muốn và chỉnh sửa yêu cầu có trong class Adapee

- The Adaptee class: Class được class Adapter sử dụng để tái sử dụng chức năng và chỉnh sửa chức năng sử dụng

- Client: Class này sẽ giao tiếp với Adapter class

Mẫu cầu nối

- Mẫu bridge cho ta 1 cách thức để giao tiếp giữa 2 phần tử độc lập nhau

- Phân tách abstract class và implementer class

- Bridge pattern sử dụng 1 interface như là cầu nối giữa các class vàabstract class và các class đang triển khai interface Dễ dàng thay đổi chúng màkhông ảnh hưởng đến mã nguồn của client

Lợi ích của mẫu cầu nối

- Cho phép phân tách các triển khai và các lớp thuần ảo

- Linh hoạt trong việc thay đổi không ảnh hưởng code bên ngoài client

- Che giấu các triển khai không cho client thấy bằng cách chỉ cho client sửdụng các lớp abstract

Trang 21

Các vấn đề thường thấy đã bị loại bỏ khi áp dụng mẫu cầu

- Xóa đi các liên kết giữa các chức năng ảo hóa và triển khai của nó

- Dễ dàng thay đổi các lớp đang triển khai mà không ảnh hưởng client

- Mở rộng abstraction và các triển khai bằng các lớp con

Triển khai mẫu cầu nối trong Spring Framework

Các module spring dưới đây là dựa vào mẫu bridge:

- ViewRenderServlet: Là bridge servlet, sử dụng cho hỗ trợ Portlet MVC

- Mẫu cầu nối: The Bridge design pattern được sử dụng trong tiến trình

Spring logging

Mẫu composite

- Các object trong hệ thống được gom trong cấu trúc cây, cấu trúc cây là

sự liên kết của các nút lá và nhánh

Các vấn đề thường thấy được giải quyết bằng mẫu composite

- Mẫu Composite cho phép ta thiết kế các object để sử dụng các object nàynhư là 1 thành phần của các object khác và là 1 object riêng lẻ khác

- Tạo ra cấu trúc cây có thứ bậc rõ ràng để cung cấp client với cách sử

Trang 22

dụng tương tự nhau

Cấu trúc UML của mẫu composite

Mẫu composite dựa trên thành phần của cấu trúc cây, cây có 3 phần

là nhánh, node và lá

- Component: là nhánh của cây, 1 nhánh thường có nhiều nhánhnhỏ, nút, lá khác Component cung cấp sự trừu tượng cho tất cả thành phần baogồm cả composite object Trong mẫu Composite, component là interface củacác đối tượng

- Leaf: là object triển khai các phương thức của component

- Composite: Là node của cấu trúc cây, nó có nhiều node khác và

lá khác Nó có các method để thêm con như là một collection có cùng 1 kiểuobject, nó bao gồm nhiều phương thức component cho con

Lợi ích của mẫu composite

- Cung cấp tính linh hoạt trong việc thêm component trong tiến trình, và thay đổi trong các component hiện có

- Cho phép tạo class có lớp cấp bậc rõ ràng bao gồm các object riêng rẻ vàcác object hỗn hợp

22

Trang 23

Mẫu decorator

- Decoratior design pattern cho phép thêm và loại bỏ các hành vi của cácobject trong quá trình runtime một cách linh hoạt hoặc tĩnh mà không cần thayđổi hành vi hiện có của các object từ cùng 1 class

- Chia chức năng thành các concrete class

Lợi ích của mẫu decorator

- Mở rộng chức năng một cách linh hoạt và tĩnh mà không phải thay đổi cấu trúc của các object hiện có

- Thêm linh hoạt các nhiệm vụ mới cho 1 object

- Mẫu decorator còn được biết đến như là Warper

- Sử dụng các thành phần cho các quan hệ của các object để duy trì

Trang 24

Các lớp và đối tượng tương tác với nhau:

- Component (Account): Là interface của các object có trách nhiệm thêm một cách linh hoạt

- ConcreteComponent (SavingAccount): là concrete class của componentinterface và nó khai báo 1 object mà trách nhiệm thêm có thể được đính vào

- Decorator (AccountDecorator): Liên quan đến component object và khai báo interface phù hợp

- ConcreteDecorator (SeniorCitizen and Privilege): là triển khai concrete của mẫu decorator và nó thêm trách nhiệm đến các component

Mẫu Facade

Lợi ích của mẫu Facade:

- Giảm thiểu tính phức tạp cho client khi tương tác với các hệ thống con

- Mẫu này kết hợp tất cả bussiness service như là một interface để dễ dànghiểu rõ

- Mẫu giảm thiểu các phụ thuộc của mã nguồn client trong phần làm việccủa hệ thống

Nhân biết được khi cần sử dụng mẫu facade

Ví dụ bạn cần phát triển một phần mềm bank cho doanh nghiệp vớinhiều service để làm việc bạn cần (AccountService, TranferService), Mãnguồn của client sẽ tương tác với tất cả service này để chuyển tiền từ tàikhoản này sang tài khoản khác

24

Trang 25

Mã nguồn client trực tiếp tương tác với các class trong hệ thống con,

có thể mô tả 1 hoặc nhiều interface giúp cho hệ thống con dễ sử dụng hơn

Mẫu ủy quyền

- Cung cấp 1 đối tượng của 1 class với chức năng của tất cả class còn lại cần tới nó

- Mục đích của mẫu là cung cấp một class thay thế cho class khác, đi cùngvới đó là chức năng

Trang 26

Mục đích của mẫu ủy quyền

- Mẫu Proxy ẩn giấu object xử lí không cho bên ngoài xem được

- Tạo object theo nhu cầu nên có thể nâng cao hiệu suất

Cấu trúc UML của mẫu ủy quyền

- Subject: Interface thật sự được triển khai bởi mẫu Proxy và RealSubject

- RealSubject: Thực tế việc triển khai Subject, là một object thật sự rằng được đại diện bởi Proxy

- Proxy: Nó là một proxy object và nó cũng là triển khai của object thật sự của Subject, nó duy trì việc giới thiệu đến object thật sự

Mẫu xâu chuỗi nhiệm vụ

- Mẫu chain of responsibility thuộc mẫu thể loại behavioral từ GOF

Trang 27

- Sender và receivers của request được tách ra, sender gửi request đến chuỗi của receivers và 1 trong số receiver object có thể đảm nhận request

Lợi ích của mẫu Chain of Responsibility:

- Giảm thiểu sự liên kết giữa sender và receiver object trong hệ thống để giải quyết request

- Mềm dẻo trong việc xử lí các object được tham chiếu

- Tạo một chuỗi object sử dụng tính thành phần, và tập các object này làmviệc như một đơn vị duy nhất

- Handler: Là lớp ảo hoặc interface của hệ thống để xử lí request

- ConcreteHandler: Là các concrete class mà thực thi những xử lí

request, hoặc đưa request đến phiên xử lí tiếp theo

- Client: lớp ứng dụng để khởi tạo nên request cho các object xử lí

request trong chuỗi

Mẫu yêu cầu

- Đóng gói request data trong 1 object và đưa các object đó như là mệnh lệnh tới phương thức, trả về là mệnh lệnh là 1 object

- Cho phép truyền data như là object giữa các phần tử trong hệ thống người gửi và nhận

- Cho phép tham số hóa các object bởi action

Trang 28

- Thêm các lệnh trong hệ thống mà không phải thay đổi class hiện tại

- Command: Là interface hoặc lớp ảo có 1 action để xử lí hệ thống

- ConcreteCommand: Là triển khai concrete của command interface và tạo action

- Client: Là class main, tạo ra một Concrete command object và gán cho receiver

- Invoker: Là Caller để kích request tới command object

- Receiver: Là phương thức xử lí mà hiện thực các hoạt động bởi

concrete command

Mẫu thông dịch viên

Mẫu interpreter cho phép bạn thông dịch một thể hiện ngôn ngữ

trong lập trình để khởi tạo một bản trình bày

- Cho phép thay đổi và kế thừa grammar dễ dàng

- Sử dụng ngôn ngữ tự nhiên rất dễ

Trang 29

- AbstractExpression: Là interface để thực thi nhiệm vụ bởi sử dụng interpreter operation

- AbstractExpression: Là các triển khai của interface và nó triển khai hàminterpret()

- NonterminalExpression: là triển khai của phần còn lại của interface và nótriển khai interpret() operation

- Context: Là chuỗi operation và nó bao gồm thông tin cục bộ cho thông dịch

- Client: Là class main để hành xử operation thông dịch

Mẫu trình lặp lại

- Dễ dàng truy cập các item trong collection

- Có thể truy cập nhiều item cùng lúc từ collection bởi vì nó hỗ trợ nhiều các biến thể

- Cung cấp một uniform interface để vượt qua nhiều cấu trúc khác nhau trong collection

Trang 30

- Iterator: Là interface hoặc lớp ảo để truy cập các items của collection

- ConcreteIterator: Là triển khai của Iterator interface

- Aggregate: Là interface để tạo ra iterator object

- ConcreteAggregate: Là triển khai của Aggregate interface, nó triển khaihàm tạo Iterator interface để trả về là instance của ConcreteIterator thích hợp

Mẫu bản mẫu

Trong mẫu template, một lớp ảo sẽ bao gói các khởi tạo vào method.Method đó sẽ cho phép kế thừa không được sửa method này Có thể sửdụng concrete class trong phần mềm bạn để hành xử một số loại hànhđộng

Lợi ích việc sử dụng mẫu template:

- Giảm thiểu code bản mẫu trong phần mềm bằng việc sử dụng lại code

- Mẫu tạo ra một số template hoặc cách thức để sử dụng lại nhiều thuật toán để hiện thực các yêu cầu bài toán

30

Trang 31

- AbstractClass: Là lớp ảo bao gồm các method của template là xương sống của thuật toán

- ConcreteClass: Là concrete class con của AbstractClass triển khai các hoạt động của thuật toán

2 Mẫu thiết kế J2EE

Mẫu thiết kế của Java EE cung cấp phương pháp kiểm thử và luyệntập cho các tương tác của object trong nhiều tầng khác nhau của ứng dụng.Bao gồm 3 phân lớp

· Mẫu thiết kế của tầng presentation

· Mẫu thiết kế của tầng business (xử lý login)

· Mẫu thiết kế của tầng integration

Mẫu thiết kế của tầng trình bà̀y:

· View helper: Nó phân tách các view từ business logic của ứng dụng J2EE doanh nghiệp

· Front Controller: Cung cấp một điểm hành động để đảm nhiệm cácrequest đến ứng dụng J2EE, đưa các request đến các controller để truy cập

Ngày đăng: 18/08/2022, 16:54

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