Đang tải dữ liệu...
ParkOur Việt

 Bản tin | Bài viết | Thư viện | Diễn đàn | Giới thiệu | Liên hệ | Tìm kiếm 
  Trang chủ  >  Diễn đàn .NET Việt Nam  >  Công nghệ nền tảng .NET/Mono  >  Căn bản về .NET Framework
  Căn bản về .NET Framework
Trang:  1/6    Sau >  |   Cuối >>
  Chuyên đề Design Patterns (hàng độc chiêu)  12974 / 39
Trần Bình Trọng
Thành viên mới
Đăng ký:  27/03/2006
Tham gia:  27/03/2006
Điểm:  699
Bài:  156
  Gửi lúc:  08/09/2007 11:10:16 AM   -   Quỳnh Nguyễn   sửa đổi lúc:  03/04/2008 12:39:02 AM
  • Mình biên tập chuyên đề về "Mẫu thiết kế" này với mong muốn được chia sẽ kiến thức với mọi người. Hiện mình đang nghiên cứu 2 bộ Design Patterns của nhóm GANG OF FOUR và bộ Enterprise Library. Với hi vọng cùng nhau phát triền, mong mọi người chung tay cho chủ đề này.
  • Trong tháng này mình sẽ hoàn thành bộ Design Patterns của nhóm GANG OF FOUR. Mình sẽ pop lên cho mọi người tham khảo
Trần Bình Trọng
Thành viên mới
Đăng ký:  27/03/2006
Tham gia:  27/03/2006
Điểm:  699
Bài:  156
  Gửi lúc:  08/09/2007 11:13:33 AM   -   Trần Bình Trọng  sửa đổi lúc:  08/09/2007 11:18:59 AM

Nhập cuộc!

- Trong công nghệ phần mềm, một mẫu thiết kế là một giải pháp tổng thể cho các vấn đề chung trong thiết kế phần mềm. Một mẫu thiết kế không phải là một thiết kế hoàn thiện để mà có thể được chuyển đổi trực tiếp thành mã; nó chỉ là một mô tả hay là sườn (template) mô tả cách giải quyết một vấn đề mà có thể được dùng trong nhiều tình huống khác nhau. Các mẫu thiết kế hướng đối tượng thường cho thấy mối quan hệ và sự tương tác giữa các lớp hay các đối tượng, mà không cần chỉ rõ các lớp hay đối tượng của từng ứng dụng cụ thể. Các giải thuật không được xem là các mẫu thiết kế, vì chúng giải quyết các vấn đề về tính toán hơn là các vấn đề về thiết kế.

- Đây thực sự là 1 nghệ thuật, tiếp nhận nó về tư tưởng là chính, nó rất "khó nhai". Chi phí làm 1 chương trình với DP là rất lớn, vì vậy DP cũng ít áp dụng trong program bình thường. Chỉ những công ty lớn mới bỏ thời gian ra nghiên cứu trong những program quan trọng, còn những công ty nhỏ viết chương trình ra chạy được là ok rồi . Bù lại program viết bằng DP chỉ cần sửa rất ít là ra chương trình mới.

- Nhiều người rất ghét DP, cho nó là thứ bỏ đi vì họ thấy không cần DP thì vẫn viết chương trình chạy tốt.

- 1 ví dụ về program Design Pattern: Viết 1 chương trình chơi cờ sao cho chơi được nhiều loại cờ (cờ Vua, cờ Tướng, cờ Nhảy). Nếu bạn thiết kế tốt thì bạn chỉ cần viết kỹ 1 loại cờ (giả sử Cờ Vua) rồi viết thêm loại cờ mới (Cờ tướng) bạn chỉ cần định nghĩa lại: Kích thước bàn cờ, định nghĩa các loại quân của cờ tướng là program chạy ok. Còn phương pháp xứ lý khi chơi thì được tái sử dụng lại.

- Design Patterns đưa ra các giải pháp chuẩn và các qui ước đặt tên cho các vấn đề chung trong thiết kế phần mềm. Các tác giả của cuốn sách GANG OF FOUR là Erich Gamma, Richard Helm, Ralph Johnson và John Vlissides, hay còn được biết đến với các tên "Gang of Four" hay đơn giản là
Trần Bình Trọng
Thành viên mới
Đăng ký:  27/03/2006
Tham gia:  27/03/2006
Điểm:  699
Bài:  156
  Gửi lúc:  08/09/2007 01:56:06 PM   -   Trần Bình Trọng  sửa đổi lúc:  08/09/2007 01:58:46 PM
Các mẫu thiết kế trong catalog

- Catalog của chúng ta bao gồm 23 mẫu thiết kế. Dưới đây, chúng được liệt kê theo tên gọi và mục đích để giúp bạn có được cái nhìn sơ bộ về từng mẫu.

Abstract Factory. Cung cấp giao diện để khách hàng có thể tạo ra những nhóm đối tượng có liên quan hoặc phụ thuộc lẫn nhau mà không cần phải chỉ định rõ chúng thuộc những lớp cụ thể nào.

Adapter
. Hoán chuyển giao diện của một lớp thành một giao diện khác theo yêu cầu của phía khách. Adapter cho phép những lớp có giao diện không tương thích cùng làm việc chung với nhau.

Bridge.
Tách biệt phần trừu tượng và phần cài đặt thành 2 phần riêng rẽ, nhờ đó chúng có thể biến đổi độc lập.

Builder.
Tách riêng quá trình kiến tạo nên một đối tượng phức tạp khỏi phần trình bày của nó, nhờ đó cùng một quá trình kiến tạo có thể dùng để tạo ra những phần trình bày khác nhau.

Chain of Responsibility.
Gỡ bỏ sự trói buộc đối tượng gửi yêu cầu sử lý với một đối tượng nhận yêu cầu, bằng cách tạo điều kiện để nhiều hơn một đối tượng có thể tiếp nhận và sử lý yêu cầu đó. Ðể đạt được điều đó, những đối tượng nhận yêu cầu được kết nối với nhau thành một chuỗi, và yêu cầu sẽ được truyền dọc theo chuỗi đó cho đến khi có một đối tượng nào đó tiếp nhận nó.

Command.
Gói gọn mỗi lời yêu cầu trong một đối tượng. Nó cho phép bạn gửi những lời yêu cầu khác nhau (dưới dạng các đối tượng) đến những đối tượng mà bạn không cần phải biết trước về những phương thức của chúng.

Composite.
Sắp xếp các đối tượng theo cấu trúc cây để tạo ra một hệ thống phân cấp nguyên phân (part- whole hierarchy). Composite cho phép phía khách đối sử với những đối tượng riêng rẽ và những đối tượng đa hợp một cách đồng nhất.

Decorator
. Gắn thêm trách nhiệm cho một đối tượng khi chương trình đang thực thi. Decorator cung cấp một giải pháp thay thế linh động hơn là thừa kế lớp để mở rộng thêm chức năng cho các lớp.

Facade.
Cung cấp một giao diện đồng nhất cho tập hợp các giao diện trong một hệ thống phụ. Facade định nghĩa giao diện ở mức độ cao hơn, nhờ đó hệ thống phụ trở nên dễ sử dụng hơn.

Factory Method.
Định nghĩa giao diện để tạo ra một đối tượng, nhưng lại để cho những lớp con quyết định nên tạo tao ra đối tượng từ những lớp nào. Factory Method cho phép một lớp nhường lại việc tạo ra các đối tượng cho các lớp con.

Flyweight.
Sử dụng phương pháp "chia sẻ" để hỗ trợ một số lượng lớn các đối tượng hạt giống.

Intepreter.
Dùng để biểu diễn thành phần ngữ pháp của một ngôn ngữ, dồng thời nó cũng tạo ra phần thông dịch để dịch những câu cú của ngôn ngữ đó theo những quy tắc ngữ pháp.

Iterator.
Cung cấp cách thức để truy cập đến những phần tử của một đối tượng tập hợp (aggregate object) một cách tuần tự mà không cần đối tượng đó phải phơi bày những chi tiết ra bên ngoài.

Mediator.
Dùng một đối tượng để bao bọc tất cả những mối tương tác giữa một tập hợp các đối tượng. Mediator khuyến khích việc gán ghép lỏng các đối tượng với nhau bằng cách giữ không cho chúng tương tác trực tiếp với nhau, nhờ đó bạn có thể biến đổi những mối tương tác đó một cách độc lập.

Memento.
Nắm bắt và xuất ra ngoài trạng thái bên trong của một đối tượng sao cho sau đó chúng ta có thể dễ dàng phục hồi lại trạng thái đó. Memento làm công việc đó mà không vi phạm tính bao bọc của dữ liệu.

Observer.
Định nghĩa mối quan hệ một-nhiều giữa các đối tượng sao cho khi một đối tượng thay đổi trạng thái của nó thì tất cả các đối tượng còn lại cũng được thông báo về sự thay đổi đó và tự động cập nhật.

Prototype.
Quy định những dạng loại đối tượng được sinh ra dựa theo một đối tượng mẫu. Prototype tạo ra các đối tượng mới bằng cách copy từ đối tượng mẫu.

Proxy.
Uỷ nhiệm quyền truy cập đến một đối tượng cho một đối tượng khác.

Singleton.
Bảo đảm một lớp chỉ có thể có duy nhất một instance, và cung cấp quyền truy cập đến đối tượng đó ở phạm vi toàn cục.

State.
Cho phép một đối tượng thay đổi hành vi của mình khi trạng thái bên trong của nó thay đổi. Khi đó đối tượng giống như là thay đổi lớp vậy.

Strategy.
Định nghĩa một dòng họ các giải thuật, bao bọc mỗi giải thuật bằng một đối tượng và làm cho chúng có thể thay thế lẫn nhau. Strategy giúp cho giải thuật có thể biến đổi một cách độc lập, không gây ảnh hưởng đến khách hàng sử dụng nó.

Template Method.
Định nghĩa bộ xương cho một thuật toán bên trong một phương thức của lớp, và nhường lại một số công việc cho các lớp con. Template Method cho phép các lớp con tái định nghĩa một số phần trong thuật toán mà không làm thay đổi cấu trúc của thuật toán đó.

Visitor. Thể hiện một thao tác cần phải thực hiện trên các phần tử của một cấu trúc đối tượng. Visitor cho phép bạn định nghĩa một thao tác mới mà không cần phải thay đổi các lớp của những phần tử đó.
Trần Bình Trọng
Thành viên mới
Đăng ký:  27/03/2006
Tham gia:  27/03/2006
Điểm:  699
Bài:  156
  Gửi lúc:  08/09/2007 02:01:35 PM   -   Trần Bình Trọng  sửa đổi lúc:  08/09/2007 02:06:10 PM






DESIGN PATTERNS LIST






GANG OF FOUR






STT Name Readed Reading Not read
Creational patterns
1 Abstract Factory X


2 Builder
X

3 Factory Method X


4 Prototype X


5 Singleton X


Structural patterns
6 Adapter

X
7 Bridge

X
8 Composite

X
9 Decorator

X
10 Facade
X

11 Flyweight X


12 Proxy
X

Behavioral Patterns
13 Chain Of Responsibility

X
14 Command X


15 Interpreter

X
16 Iterator
X

17 Mediator

X
18 Memento X


19 Observer

X
20 State X


21 Strategy X


22 Template Method

X
23 Visitor

X






ENTERPRISE APPLICATION






STT Name Readed Reading Not read
Domain logic
1 Transaction Script X


2 Domain Model X


3 Table Module

X
4 Service Layer

X
Data Source Architectural
5 Table Data Gateway X


6 Row Data Gateway X


7 Active Record X


8 Data Mapper X


Object – Relational Behavioral
9 Unit Of Work X


10 Identity Map X


11 Lazy Load X


Object – Relational Structural
12 Identity Field

X
13 Foreign Key Mapping

X
14 Dependent Mapping

X
15 Embedded Value

X
16 Serialized LOB

X
17 Single Table Inheritance

X
18 Class Table Inheritance

X
19 Concrete Table Inheritance

X
20 Inheritance Mappers

X
Object – Relational Metadata Mapping
21 Metadata mapping

X
22 Query Object X


23 Repository

X
Web Presentation
24 Model View Controller

X
25 Page Controller

X
26 Front Controller

X
27 Template View

X
28 Transform View

X
29 Two Step View

X
30 Application View

X
Distribution
31 Remote Facade

X
32 Data Transfer Object

X
Offline Concurrency
33 Optimistic Offline Lock X


34 Pessimistic Offline Lock X


35 Coarse-Grained Lock

X
36 Implicit Lock

X
Session State
37 Client Session State

X
38 Server Session State

X
39 Database Session State

X
Base Patterns
40 Gateway

X
41 Mapper

X
42 Layer Supertype

X
43 Separated Interface

X
44 Registry X


45 Value Object

X
46 Money

X
47 Special Case

X
48 Plugin

X
49 Service Stub

X
50 Record Set

X






Trần Bình Trọng
Thành viên mới
Đăng ký:  27/03/2006
Tham gia:  27/03/2006
Điểm:  699
Bài:  156
  Gửi lúc:  08/09/2007 02:09:02 PM
Trên đây là tiến độ mà mình đang nghiên cứu, với những Patterns đã nghiên cứu, mình đã lưu tài tiệu lại, mình sẽ pop lên hàng ngày cho mọi người
Phạm Hải
Thành viên mới
Đăng ký:  26/07/2007
Tham gia:  26/07/2007
Điểm:  208
Bài:  52
  Gửi lúc:  08/09/2007 03:04:22 PM
uh! đúng là hàng độc chiêu thật... bác up tiếp cho a e nhé
Thanks
Kim Khanh
Mới học .NET
Đăng ký:  12/02/2006
Tham gia:  12/02/2006
Điểm:  45
Bài:  11
  Gửi lúc:  09/09/2007 09:14:07 PM
Tôi cũng đang nghiên cứu nhưng thấy khó quá. Anh có cuốn "Professional C# Design Patterns Applied 2003.pdf" của thằng Wrox không? Nếu có thì share cho tôi với.
GM: itjunkie@gmail.com
Tôi chỉ tìm được chương 3 của cuốn này thôi.
Trần Bình Trọng
Thành viên mới
Đăng ký:  27/03/2006
Tham gia:  27/03/2006
Điểm:  699
Bài:  156
  Gửi lúc:  10/09/2007 11:14:20 AM
Để có kiến thứ vững chắc trước khi vào DP thì các bạn nên xem lại các phần cơ bản về ngôn ngữ (ở đây mình chuyên về C#) các bạn có thể Download cuốn
Trang:  1/6    Sau >  |   Cuối >>
Chủ đề mới:
  • cho mình hỏi câu cơ bản tí thanks trước nhé (75/1)  
  • Bắt đầu học Dot Net như thể nào? (9273/48)  
  • Điểm khác nhau giữa hai đoạn code (420/4)  
  • Giải phóng bộ nhớ (1390/3)  
  • Xin chương trình dịch ngược mã nguồn của .NET ? (7214/23)  
  • LAP TRINH HUONG DOI TUONG (3514/18)  
  • convert từ .net framework 1.1 sang framework 2.0 (188/2)  
  • Chủ đề khác:
  • Mới học .Net (716/3)
  • Test Automation??? (2596/8)
  • System.IO.Directory.Move (1094/3)
  • Căn bản về .NET (14780/20)
  • Tự học C# căn bản. (3088/6)
  • net framework 3.5 configuration tool? (1582/1)
  • Socket and Port (1690/5)
  • Thống kê thành viên online
    Số lượt truy cập: 4.306.773
    Số người trực tuyến: 50
     Trang chủ | Giới thiệu | Liên hệ BQT | Tìm kiếm