Welcome to Huynh's Collections. We hope you enjoy your visit.


You're currently viewing our forum as a guest. This means you are limited to certain areas of the board and there are some features you can't use. If you join our community, you'll be able to access member-only sections, and use many member-only features such as customizing your profile, sending personal messages, and voting in polls. Registration is simple, fast, and completely free.


Join our community!


If you're already a member please log in to your account to access all of our features:

Username:   Password:
Add Reply
Design Pattern; Giới thiệu các mẫu thiết kế hướng đối tượng
Topic Started: Jan 12 2013, 07:38 PM (391 Views)
Huynhnb8x
Member Avatar
Th1nk
[ *  *  * ]
1.Vai tṛ của thiết kế

Thiết kế là 1 công đoạn quan trọng trong qui tŕnh phát triển phần mềm.
Thiết kế là bước chuyển tiếp của giai đoạn phân tích và là bước chuẩn bị trước khi chúng ta tiến hành xây dựng phần mềm.
Thiết kế là tiến tŕnh mà ở đó xuất hiện mô h́nh các kiểu mẫu của phần mềm. Các mô h́nh này chính là những nét phác thảo nên phần mềm. Nó cho chúng ta biết phần mềm chúng ta đang xây dựng là ǵ, đă có, đang có và sẽ có những ǵ.
Thiết kế là nơi mà ta có thể trả lời câu hỏi “Liệu phần mềm này có thể chạy được không?” , “Phần mềm có thể đáp ứng được các yêu cầu của khách hàng hay không?” mà không cần đợi đến công đoạn phát triển.

2.Các nguyên lư thiết kế hướng đối tượng

- Nguyên lư 'đóng mở': một moudle cần “mở” đối với việc phát triển thêm tính năng nhưng phải “đóng” đối với việc sửa đổi mă nguồn
- Nguyên lư thay thế Liskov: Các chức năng của hệ thống vẫn thực hiện đúng đắn nếu ta htay bất ḱ một lớp đối tượng nào bằng đối tượng kế thừa.
- Nguyên lư nghịch đảo phụ thuộc: phụ thuộc vào mức trừu tượng, không phụ thuộc vào mức chi tiết.
- Nguyên lư phân tách giao diện: nên có nhiều giao diện đặc thù với bên ngoài hơn là chỉ có một giao diện dùng chung cho một mục đích.

3.Các mẫu thiết kế (Design Pattern)

Khái niệm:
Mẫu thiết kế (Design Pattern) là vấn đề thông dụng cần giải quyết và là cách giải quyết vấn đề đó trong một ngữ cảnh cụ thể, Mẫu thiết kế tuân thủ nghiêm ngặt các nguyên lư thiết kế hướng đối tượng ở trên.
Mẫu thiết kế không đơn thuần là một bước nào đó trong các giai đoạn phát triển phần mềm mà nó đóng vai tṛ là sáng kiến để giải quyết một vấn đề thông dụng nào đó. Mẫu thiết kế sẽ giúp cho việc giải quyết vấn đề nhanh, gọn và hợp lư hơn.
Mẫu thiết kế c̣n được sử dụng nhằm cô lập các thay đổi trong mă nguồn, từ đó làm cho hệ thống có khả năng tái sử dụng cao.
Chúng ta sẽ t́m hiểu một số mẫu thiết kế kinh điển (GOF- Gang of Four:confused:)

Creational Patterns

Abstract Factory
Builder
Factory Method
Prototype
Singleton

Behavioral Patterns

Chain of Responsibility
Command
Interpreter
Iterator
Mediator
Memento
State
Strategy
Visitor
Template Method

Structural Patterns

Adapter
Bridge
Composite
Decorator
Facade
Flyweight
Proxy

System Patterns

Model-View-Controller (MVC)
Session
Worker Thread
Callback
Successive Update
Transaction


Cấu trúc tŕnh bày:
- Ư nghĩa của mẫu
- Mô h́nh cấu trúc mẫu và mô tả
- Trường hợp áp dụng
- Ví dụ
Knowledge crawling
Offline Profile Quote Post Goto Top
 
Huynhnb8x
Member Avatar
Th1nk
[ *  *  * ]
Design pattern là mẫu thiết kế, nhưng cụ thể là thiết kế cái ǵ?
Nói cho đơn giản th́ Design Pattern là các mẫu thiết kế dành cho các lớp đối tượng trong hệ thống, nó thể hiện các quan hệ giữa các class nhằm giải quyết một vấn đề nào đó trong hệ thống

- Có hướng tiếp cận nào khác với desing pattern cụ thể hơn không?
Theo ḿnh, để nắm được Design Pattern ta cần phải nắm vững các kiến thức về Hướng đối tượng (OO), sau khi nắm vững OO rồi th́ ta cứ đối diện trực tiếp với Design Pattern thôi (Dựa vào từng bài toán ví dụ cụ thể, ta có thể lập tŕnh để hiểu rơ nó)

- Việc phân design pattern thành 3 nhóm (creational, structural, bihavoural) là dựa trên cơ sở nào? Sao em chưa thấy có nhóm nào đả động đến việc thiết kể cả hệ thống? Trong một nhóm lại có nhiều mẫu nữa, các mẫu con đó có thể sử dụng đồng thời không?
Việc phân Design Pattern thành các nhóm khác nhau chủ yếu là dựa trên tiêu chí mục đích sử dụng
Creation: mục đích là trừu tượng hóa quá tŕnh khởi tạo đối tượng
Structural: mục đích đề cập đến việc các đối tượng kết hợp với nhau để tạo thành các cấu trúc hữu dụng hơn
Behavioral: mục đích mô tả sự tương tác giữa các đối tượng
(...)

Ngoài ra người ta c̣n chia nhóm theo phạm vi: class và object, tức là mẫu áp dụng cho lớp hay cho đối tượng

Nhóm System Pattern là nhóm đả động đến cả hệ thống mà bạn nói, ví dụ mẫu MVC chẳng hạn (có thể gọi nó như là mô h́nh 3 tầng của hệ thống)
Các mẫu thiết kế có thể dùng đan xen với nhau, bổ trợ cho nhau

- Anh có thể nêu một vài ví dụ cụ thể về những vấn đề mà 3 nhóm trên mắc phải không?
Mỗi mẫu thiết kế riêng biệt bản thân nó mang những thuận lợi và khó khăn riêng. Do đó khi t́m hiểu từng mẫu bạn sẽ thấy điều này chứ ta không thể chỉ ra những vướng mắc của cả nhóm smile
Ví dụ mẫu AbstractFactory chẳng hạn, cái thuận lợi có thể thấy ngay của mẫu này là tạo ra sự độc lập nhất định trong việc khởi tạo đối tượng, nhưng bên cạnh đối có thể thấy sự "rườm rà" của nó (phải bổ sung nhiều mă nguồn khi có thêm một loại "sản phẩm" - đối tượng mới)
Knowledge crawling
Offline Profile Quote Post Goto Top
 
« Previous Topic · Tài liệu sưu tầm · Next Topic »
Add Reply


Theme by James... of the ZBTZ and themeszetaboards.com