Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 62 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
62
Dung lượng
1,58 MB
Nội dung
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 Môn : Mẫu Thiết Kế Phần Mềm Lớp : Sáng thứ 6, Tiết 1-4 Mã lớp : DEPA330879_21_2_03CLC Thực đề tài: Nhóm 09 STT Họ tên SV MSSV Quách Diệu Khánh 191102 26 Phan Tấn Thành 191102 Phạm Ngọc Đức 88 Võ Hữu Giàu 191101 57 191101 96 Tên đề tài: Tìm hiểu Spring Framework mẫu thiết kế phần mềm có 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 Tp Hồ Chí Minh, ngày …., tháng …., năm 2022 Giảng viên hướng dẫn Nguyễn Minh Đạo LỜI CẢM ƠN Overview of GOF Design Patterns - Core Design Patterns Giới thiệu sức mạnh mẫu Design Patterns Tổng quan mơ hình thiết kế GOF Creational design patterns Consideration of Structural and Behavioral Patterns Phân tích cốt lõi mẫu thiết kế 18 18 Mẫu cấu trúc 18 Mẫu hành vi 27 Mẫu thiết kế J2EE 32 Wiring Beans using the Dependency Injection Pattern 34 The dependency injection pattern 34 Types of dependency injection patterns 34 Constructor-based dependency injection 34 Setter-based dependency injection 35 Configuring the dependency injection pattern with Spring 36 Annotating beans for autowiring Lookup-method injection pattern 36 Implementing the Abstract Factory Pattern in Spring 37 Implementation of FactoryBean interface in Spring 37 Ví dụ 22 mẫu học mẫu bổ sung 38 Structural Pattern: 38 Mẫu Adapter: 38 Bridge: 39 Mẫu Composite: 40 Mẫu Decorator: 40 Mẫu Facade: 41 Mẫu Flyweight: 42 Mẫu Proxy: 42 Creational Pattern: 43 Mẫu Factory Method: 43 Abstract Factory: 44 10 Builder: 44 11 Singleton: 45 12 Prototype: 45 Behavior Pattern: 46 13 Chain of Responsibility: 46 14 Command: 47 15 Iterator: 48 16 Mediator: 49 17 Memento: 50 18 Observer: 51 19 Strategy: 51 20 Template Method: 52 21 Visitor: 53 22 State: 54 Các mẫu mở rộng: 55 23 Null object: 55 24 Interpreter Pattern: 56 25 MVC Pattern: 58 26 Dependency Injection Pattern: 59 27 Dao Pattern: 60 28 Intercepting Filter 61 29 DataAccessObjectPattern 63 Tài Liệu Tham Khảo 63 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 hoàn thành đề tài báo cáo Đặ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 hướng dẫn chúng em trình hồn thành báo cáo Nhóm em cố gắng vận dụng kiến thức học học kỳ qua để hoàn thành báo cáo Nhưng kiến thức hạn chế khơng có nhiều kinh nghiệm thực tiễn nên khó tránh khỏi thiếu sót q trình nghiên cứu trình bày Rất kính mong góp ý thầy để báo cáo nhóm em hồn thiện Một lần nữa, nhóm em xin trân trọng cảm ơn quan tâm giúp đỡ thầy giúp đỡ nhóm em trình thực báo cáo Xin trân trọng cảm ơn! Overview of GOF Design Patterns - Core Design Patterns Giới thiệu sức mạnh mẫu Design Patterns Trên thực tế, cụm từ Design Pattern không liên quan đến ngôn ngữ lập trình khơng cung cấp giải pháp cụ thể cho vấn đề ngôn ngữ, khái niệm kỹ thuật phần mềm mô tả giải pháp định kỳ cho vấn đề phổ biến thiết kế phần mềm Các mẫu đại diện cho thực tiễn tốt sử dụng 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 kịch cụ thể tảng Vì vậy, bối cảnh điều kiện xung quanh mà vấn đề tồn Bối cảnh phải ghi lại khuôn mẫu + Các mẫu thiết kế phát triển để cung cấp giải pháp tốt cho số vấn đề định gặp phải trình phát triển phần mềm.Vì vậy, điều nên giới hạn bối cảnh mà xem xét + Các mẫu thiết kế phương thuốc cho vấn đề xem xét Tổng quan mơ hình thiết kế GOF Tác giả sách có tiêu đề GOF nhóm người gồm có Erich Gamma, Richard Helm, Ralph Johnson John Vlissides Vấn đề sách liên quan đến yếu tố phần mềm hướng đối tượng tái sử dụng, khởi xướng khái niệm mẫu thiết kế 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 giải pháp cho vấn đề phổ biến thiết kế phần mềm Các mẫu phân loại thành hai loại chính: + Core Design Patterns + J2EE Design Patterns Core Design Patterns chia thành ba loại mẫu thiết kế, sau: + Creational Design Pattern: mẫu danh mục cung cấp cách để xây dựng đối tượng nhà thầu khơng phục vụ mục đích bạn Logic sáng tạo đối tượng ẩn Các chương trình dựa mẫu linh hoạt việc định tạo đối tượng theo yêu cầu bạn trường hợp sử dụng bạn cho ứng dụng + Structural Design Pattern: mẫu danh mục liên quan đến thành phần lớp đối tượng Trong ứng dụng doanh nghiệp, có hai kỹ thuật thường sử dụng để tái sử dụng chức hệ thống hướng đối tượng: kế thừa lớp hai khái niệm thành phần đối tượng thừa kế hái niệm thành phần đối tượng kế thừa sử dụng để soạn thảo giao diện xác định cách để soạn thảo đối tượng để có chức + Behavioral Design Pattern: mẫu danh mục này, đặc trưng cho cách mà lớp đối tượng tương tác phân phối trách nhiệm Các mẫu thiết kế đặc biệt quan tâm đến giao tiếp đối tượng Mơ hình thiết kế hành vi sử dụng để kiểm soát giảm luồng ứng dụng phức tạp ứng dụng doanh nghiệp Hơn nữa, JEE Design patterns, loại khác mẫu thiết kế Thiết kế ứng dụng đơn giản hóa vơ cách áp dụng mẫu thiết kế Java EE Các mẫu thiết kế Java EE ghi lại thiết kế Java Sun Các mẫu thiết kế Java EE cung cấp hướng dẫn giải pháp thử nghiệm theo thời gian thực tiễn tốt để tương tác đối tượng lớp khác ứng dụng Java EE Các mẫu thiết kế đặc biệt quan tâm đến lớp liệt kê sau: + Design pattern at the presentation layer + Design pattern at the business layer + Design pattern at the integration layer Creational design patterns Các mẫu thiết kế sáng tạo( Creational design patterns ) liên kết với phương pháp tạo đối tượng Logic tạo đối tượng ẩn cho người gọi đối tượng Cách không phù hợp với số trường hợp, cách tạo mã cứng để tạo đối tượng Nó khơng phải thực tiễn tốt để tạo đối tượng đối tượng thay đổi theo chất chương trình Do đó, mơ hình thiết kế sáng tạo( Creational design patterns ) cung cấp linh hoạt để tạo đối tượng theo chất chương trình Factory design pattern Xác định giao diện để tạo đối tượng, để lớp định lớp khởi tạo Phương pháp cho phép lớp trì hỗn việc khởi tạo cho lớp Theo mẫu thiết kế nhà máy(Factory) này, ta nhận đối tượng lớp mà không phơi bày logic cho máy khách(client) Nó gán đối tượng cho người gọi cách sử dụng giao diện chung lớp trừu tượng Điều có nghĩa mơ hình thiết kế che giấu logic thực tế việc thực đối tượng, cách tạo lớp khởi tạo Chịu trách nhiệm cho nhiệm vụ Mơ hình nhà máy(Factory) mẫu thiết kế sử dụng nhiều Java Những lợi ích 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 thành phần lớp hợp tác cách sử dụng giao diện thay ràng buộc lớp dành riêng cho ứng dụng vào mã ứng dụng cách sử dụng mẫu Ta thực đối tượng lớp thực giao diện, chạy vòng đời đối tượng quản lý nhà máy thực mơ hình Một số vấn đề chung nên sử dụng mẫu thiết kế + Mẫu loại bỏ gánh nặng cho nhà phát triển để tạo quản lý đối tượng 10 16 Mediator: - Đây mẫu dùng để kiểm soát phụ thuộc hỗn loạn đối tượng với Thay cho phép đối tượng phụ thuộc trực tiếp với vậy, ta ràng buộc đối tượng để giao tiếp với đối tượng khác phải qua đối tượng trung giang - Mu ny khỏ ging mu Faỗade ch khỏc ú đối tượng biết đối tượng trung gian v khụng giao tip trc tip, cũn Faỗade đối tượng khơng giao tiếp với đến đối tượng trung giang - Code ví dụ: ta có chương trình chat nhóm thành viên chat tất thành viên khác room nhận Thay cho phép lớp user tự phải tìm thành viên room, kiểm tra xem thành viên có online thành viên có muốn nhận chat từ khơng Ta sử dụng mẫu Mediator user khơng cần phải quan tâm, cần gửi chat cho mediator lo liệu - Class Diagram 48 17 Memento: - Đôi cần phải ghi lại trạng thái bên đối tượng Chúng ta cần lưu trạng thái đối tượng Nhưng có vấn đề thuộc tính đối tượng lưu trữ để public dễ bị tác nhân bên ngồi thay đổi, private khó mà truy cập Mẫu memento giúp ta giải vấn đề - Code ví dụ: ta muốn tạo chương trình để quản lý tọa độ, chương trình cho phép khơi phục lại liệu thời điểm trước - Class Diagram: 49 18 Observer: - Trong trường hợp số đối tượng định cần thông báo thường xuyên thay đổi xảy đối tượng khác Mẫu Observer sử dụng mà đối tượng có thay đổi trạng thái, tất thành phần phụ thuộc thơng báo cập nhật cách tự động - Code ví dụ: ta có đối tượng chứa số liệu thời tiết đối tượng dùng để hiển thị số liệu này, dùng mẫu Observer để số liệu đối tượng thời tiết thay đổi đối tượng hiển thị cập nhật số liệu - Class Diagram: 19 Strategy: - Có vài trường hợp, lớp khác hành vi 50 chúng Trong trường hợp vậy, ý tưởng tốt tách biệt thuật toán lớp riêng biệt để có khả lựa chọn thuật toán khác thời gian chạy (run-time) Ý tưởng gọi Strategy Pattern, pattern giúp giải vấn đề thay đổi - Code ví dụ: ta có chương trình triển khai nhiều giải thuật xếp khác (QuickSort, MergeSort…) để xếp lại danh sách Bằng cách sử dụng mẫu Strategy ta hốn đổi linh hoạt giải thuật mà không cần phải tạo thêm class mới, ví dụ: SortedList, MergeSort… - Class Diagram: 20 Template Method: - Trong trình phát triển ứng dụng số lớp có thuật tốn gần giống nhau, khác vài chi tiết nhỏ, ta phải sửa đổi lại thuật toán ban đầu - Template Method mẫu dùng để định nghĩa trước khung cho thuật tốn cịn chi tiết cách triển khai giao lại cho lớp đảm nhận - Thông thường giải thuật xếp, thành phần collection số nguyên thủy ta muốn thực xếp cho thành phần có cấu trúc liệu phức tạp - Code ví dụ: sử dụng mẫu Template Method để xếp theo tuổi, 51 theo tên cho cấu trúc liệu học sinh - Class Diagram: 21 Visitor: - Visitor cho phép định nghĩa thao tác (operations) tập hợp đối tượng (objects) không đồng (về kiểu) mà không làm thay đổi định nghĩa lớp (classes) đối tượng Để đạt điều này, mẫu thiết kế visitor ta định nghĩa thao tác lớp tách biệt gọi lớp visitors, lớp cho phép tách rời thao tác với đối tượng mà tác động đến Với thao tác thêm vào, lớp visitor tương ứng tạo - Code ví dụ: ta có chương trình truy cập vào trường shape để xuất định dạng XML - Class Diagram: 52 22 State: - State Pattern mẫu cho phép đối tượng có nhiều hành vi dựa vào trạng thái bên nó, đối tượng có hành vi nhờ ủy thác cho đối tượng mang trạng thái Mẫu State giống với mẫu Strategy, mẫu State thay đổi hành vi dựa vào trạng thái nó, mẫu Strategy tự định nên sử dụng hành vi - Code ví dụ: ta cần xây dựng ứng dụng quản lý Document Một Document bao gồm trạng thái: tạo (New), đăng (Submitted), phê duyệt (Approved) từ chối (Rejected) - Class Diagram: 53 5.4 Các mẫu mở rộng: 23 Null object: - Null Object Pattern Pattern thuộc nhóm hành vi (Behavior Pattern) Null Object pattern Gang of Four Design Pattern Tư tưởng Null Object sử dụng đối tượng Null đặc biệt để gói gọn vắng mặt thể cách cung cấp thay hành xử theo cách thụ động phù hợp Các thành phần tham gia Null Object Pattern: AbstractObject : định nghĩa hành vi mà đối tượng có RealObject : triển khai thực AbstractObject thực số hành động thực tế NullObject : triển khai khơng làm trả giá trị mặc định AbstractObject, để cung cấp đối tượng không null cho Client Client : nhận triển khai AbstractObject sử dụng Nó khơng thực quan tâm NullObject RealObject hai sử dụng theo cách 54 24 Interpreter Pattern: - Interpreter Pattern Pattern thuộc nhóm hành vi (Behavior Pattern) Interpreter nghĩa thơng dịch, mẫu nói “để xác định biểu diễn ngữ pháp ngôn ngữ cụ thể, với thông dịch viên sử dụng biểu diễn để diễn dịch câu ngơn ngữ” nterpreter Pattern có hạn chế phạm vi áp dụng Mẫu thường sử dụng để định nghĩa ngữ pháp đơn giản (grammar), công cụ quy tắc đơn giản (rule), … Các thành phần tham gia mẫu Interpreter: · xây dựng Context : phần chứa thông tin biểu diễn mẫu cần · Expression : interface abstract class, định nghĩa phương thức interpreter chung cho tất node cấu trúc phân tích ngữ pháp Expression biểu diễn cấu trúc phân cấp, implement Expression gọi node 55 · TerminalExpression (biểu thức đầu cuối): cài đặt phương thức Expression, biểu thức diễn giải đối tượng nhất, chứa xử lý logic để đưa thông tin context thành đối tượng cụ thể · NonTerminalExpression (biểu thức không đầu cuối): cài đặt phương thức Expression, biểu thức chứa nhiều biểu thức khác nhau, biểu thức biểu thức đầu cuối biểu thức đầu cuối Khi phương thức interpret() lớp biểu thức đầu cuối gọi, gọi đệ quy đến tất biểu thức khác mà giữ · Client : đại diện cho người dùng sử dụng lớp Interpreter Pattern Client xây dựng biểu thức đại diện cho lệnh thực thi, gọi phương thức interpreter() node cây, truyền context để thực thi tất lệnh 56 25 MVC Pattern: · Model – View – Controller (MVC) Pattern mẫu thiết kế nhằm mục tiêu chia tách phần giao diện code để dễ quản lý, phát triển bảo trì · MVC Pattern dạng Architectural Design Pattern áp dụng để xử lý vấn đề liên quan đến kiến trúc ứng dụng · MVC Pattern tuân thủ nguyên tắc thiết kế Separation of Concern, giúp phân tách logic tầng (layer) khác chương trình thành đơn vị độc lập · MVC chia ứng dụng phần mềm làm phần có tương tác với nhau: Model (dữ liệu), View (giao diện), Controller (điều khiển tương tác Model View) Các thành phần tham gia MVC Pattern: · Model : nơi lưu trữ liệu người dùng, chứa business logic Nó cho phép truy xuất liệu để hiển thị thu thập liệu Model cầu nối thành phần View Controller Mục đích quan trọng kết nối sở liệu (database), xử lý liệu chuẩn bị liệu để chuyển đến thành phần khác · View : giao diện hệ thống, nơi liệu (Model) hiển thị, nhận tương tác trực tiếp với người dùng Trong ứng dụng web, View phần hệ thống, nơi mà mã HTML sinh hiển thị Một vấn đề quan trọng View không lấy liệu trực tiếp từ Controller mà phải thông qua Model · Controller : nhận yêu cầu, liệu từ người dùng, sau cập nhật sang Model cuối trả kết lại View để show kết cho người dùng Controller không chứa logic nghiệp vụ 57 26 Dependency Injection Pattern: Với lập trình hướng đối tượng, thường xuyên làm việc với nhiều class chương trình, class liên kết với theo mối quan hệ Dependency loại quan hệ class mà class hoạt động độc lập class lại phụ thuộc class Sự phụ thuộc chặt chẽ gây nhiều khó khăn hệ thống cần thay đổi, nâng cấp Để giải vấn đề sử dụng Dependency Injection (DI), dạng design pattern thiết kế nhằm ngăn chặn phụ thuộc nêu 58 27 Dao Pattern: Data Access Object (DAO) Pattern Pattern thuộc nhóm cấu trúc (Structural Pattern) Mẫu thiết kế DAO sử dụng để phân tách logic lưu trữ liệu lớp riêng biệt Theo cách này, service che dấu cách hoạt động cấp thấp để truy cập sở liệu thực Nó gọi nguyên tắc Tách logic (Separation of Logic) Các thành phần tham gia mẫu Data Access Object (DAO) Pattern: · BusinessObject : đại diện cho Client, yêu cầu truy cập vào nguồn liệu để lấy lưu trữ liệu · DataAccessObject (DAO): interface định nghĩa phương thức trừu tượng việc triển khai truy cập liệu cho BusinessObject phép truy cập vào nguồn liệu (DataSource) · DataAccessObjectConcrete : cài đặt phương thức 59 định nghĩa DAO, lớp thao tác trực tiếp với nguồn liệu (DataSource) · DataSource : nơi chứa liệu, database, xml, json, text file, webservice, · TransferObject : POJO (Plain old Java object) object, chứa phương thức get/set sử dụng để lưu trữ liệu sử dụng DAO class 28 Intercepting Filter Intercepting filter pattern Java EE pattern, sử dụng muốn thực vài xử lý trước (pre-processing) request ứng dụng đích (target) xử lý sau (post-processing) response trả từ target Các Filter định nghĩa áp dụng yêu cầu (request) chuyển request đến ứng dụng đích thực tế (target) Các Filter thực xác thực (authentication), ủy quyền (authorization), nén liệu (compressing), ghi nhật ký (logging) theo dõi yêu cầu (tracking) sau chuyển yêu cầu đến trình xử lý tương ứng Các thành phần tham gia mẫu Intercepting filter pattern: · Filter : chịu trách nhiệm thực vài xử lý trước request target xử lý sau response trả từ target · Target : đối tượng xử lý lý chính, trình xử lý u cầu · Filter chain : chứa chuỗi Filter thực target theo thứ tự xác định · · target Filter manager : quản lý Filter Filter Chain Client : đối tượng gửi request đến target nhận response từ 60 29 Service locator Pattern Service Locator design pattern thông dụng cho phép tách rời (decouple) class với dependency (hay gọi service) Service Locator coi đối tượng trung gian việc liên kết class dependency Service Locator pattern mô tả cách để đăng ký lấy dependency để sử dụng Thông thường Service Locator kết hợp với Factory Pattern Dependency Injection Pattern để tạo instance service 61 Tài Liệu Tham Khảo Spring design pattern https://libribook.com/ebook/7950/spring-5-design-patterns-pdf/? bookid=45368 Behavior Pattern https://gpcoder.com/category/design-pattern/behavior-pattern/ Creational Pattern https://gpcoder.com/category/design-pattern/creational-pattern/ Structural Pattern https://gpcoder.com/category/design-pattern/structuaral-pattern/ 62 ... Design patterns, loại khác mẫu thiết kế Thiết kế ứng dụng đơn giản hóa vơ cách áp dụng mẫu thiết kế Java EE Các mẫu thiết kế Java EE ghi lại thiết kế Java Sun Các mẫu thiết kế Java EE cung cấp hướng... định kỳ cho vấn đề phổ biến thiết kế phần mềm Các mẫu đại diện cho thực tiễn tốt sử dụng 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... yếu tố phần mềm hướng đối tượng tái sử dụng, khởi xướng khái niệm mẫu thiết kế 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 giải pháp cho vấn đề phổ