Chương 8: Mẫu thiết kế
lượt xem 16
download
Người thiết kế tốt có khả năng nhận ra những mẫu giải quyết v vấn đề và những mẫu tương ứng để giải quyết vấn đề Những đặc trưng (lớp, nhiệm vụ, cộng tác), các thuộc tính của thiết kế mà có thể điều chỉnh để cho phép mẫu thiết kế giải quyết các vấn đề
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Chương 8: Mẫu thiết kế
- Chương 8: Mẫu thiết kế (pattern) (patte UML/NN 1
- Phần mềm tốt? Theo kiến trúc Comodity (Tiện nghi) Firmness (Tính ổn định) Delight (Tính mỹ quan) UML/NN 2
- Khó khăn của thiết kế phần mềm Độ phức tạp Tính bất qui tắc Phần mềm có thể thay đổi và luôn luôn thay đổi Phần mềm không nhìn thấy được (invisible) không nhìn th đượ (invisible) UML/NN 3
- Nguyên lý thiết kế lớp Nguyên lý đóng mở: mở với phát triển thêm nh nhưng đóng với việc sửa code vi code Nguyên lý thay thế Liskov: Các lớp cơ sở có thể thay th thay thế bằng lớp con kế thừa con th Nguyên lý nghịch đảo phụ thuộc: Phụ thuộc vào tr vào trừu tương không phụ thuộc vào chi tiết (kiến không ph thu vào chi ti (ki trúc phân tầng quá nhiều sẽ bất lợi) Nguyên lý ISP (The Inteface Segregation lý ISP (The Inteface Segregation Principle): Nên tách giao diện (vd có chức năng chung) dùng chung thành nhiều đặc thù UML/NN 4
- Mẫu thiết kế (Design Pattern) Người thiết kế tốt có khả năng nhận ra những mẫu gi quy giải quyết vấn đề và những mẫu tương ứng để giải đề và nh để gi quyết vấn đề Những đặc trưng (lớp, nhiệm vụ, cộng tác), các đặ tr (l nhi tác) các thuộc tính của thiết kế mà có thể điều chỉnh để cho phép mẫu thiết kế giải quyết các vấn đề quy các đề 5 CNPM/NN
- Pattern… Tên mẫu (Pattern name) - describes the essence of the pattern in short but expressive name pattern in a short but expressive name Mục đích (Intent) - describes the pattern and what it does Tên khác (Also-known-as) - lists any synonyms for the pattern Sự thúc đẩy (Motivation) - provides an example of the thúc đẩ (Motivation) an example of the problem Khả năng vận dụng (Applicability) - notes specific design situations in which the pattern is applicable 6 CNPM/NN
- …Pattern Cấu trúc (Structure) - describes the classes that are required to implement the pattern Lớp tham gia (Participants) - describes the responsibilities of the classes that are required to implement the pattern the pattern Cộng tác (Collaborations) - describes how the participants collaborate to carry out their responsibilities Hệ quả (Consequences) - describes the “design forces” (C “d that affect the pattern and the potential trade-offs that must be considered when the pattern is implemented (đặt cho bạn các lựa chọn) Mẫu liên quan (Related patterns) - cross-references related design patterns 7 CNPM/NN
- Các mẫu thiết kế Creational Pattern (Mẫu kiến tạo): Abstractional Factory Method Pattern Builder pattern Factory Method pattern Prototype Pattern Singleton Pattern… Structure Pattern: (có mẫu Composite, (có Co Adaptor) Behavioral Pattern: (có mẫu Observer) Pattern: (có Observer 8 CNPM/NN
- Mẫu thiết kế Singleton Cho phép có một thể hiện của lớp. Vd: Find Di Dialog, Unikey, một đối tượng toàn cục lưu đố giữ kết nối CSDL… UML/NN 9
- Singleton (kiến tạo) Singleton static uniqueInstance uniqueInstance return uniqueinstance singletonData static Instance() Instance() SingletonOp() GetSingletonData() CS 406: 10 Design Patterns
- Singleton Code Using system; Class Singleston Singleston { private static Singleston instance; static Singleston instance; Protect Singlestone() {} public static SingleStone Instance() { if (instance==null) instance = new SingleStone (); return SingleStone; } } UML/NN 11
- ADAPTER (structure) Tái sử dụng các lớp nhưng giao diện (interface) khô không tương thích thí Có những vấn đề không tương thích tiềm tàng MF12 6/22/2010 F21AS
- Adapter Có 2 mẫu: Mẫu cấu trúc Class Mẫu Cấu trúc Object MF13 6/22/2010 F21AS
- Adapter1 Adaptee Target Client request() specificRequest() Adapter request() Đa thừa kế MF14 6/22/2010 F21AS
- Adapter2 Client Target request() Adapter Adaptee request() specificRequest() MF15 6/22/2010 F21AS
- Ví dụ class PayProcessor { PayProcessor .... //this method expects a WeeklyEmployee object public static void printPay(WeeklyEmployee e) { System.out.println(e.getName() + “ is paid “ + e.getPay() ; } } WeeklyEmployee PayProcessor getName() printPay(WeeklyEmp getPay() loyee e) MF16 6/22/2010 F21AS
- ? PayProcessor client printPay(WeeklyEmp adaptee loyee e) ? WeeklyEmployee MonthlyEmployee target getName() getEmployeeName() getPay() getMonthlySalary() MF17 6/22/2010 F21AS
- Biểu đồ lớp Client - unaltered Target -unaltered. Pay WeeklyEmployee Processor getPay() printPay getName() (Weekly Employee e) MonthlyAdapter MonthlyEmployee MonthlyEmployee : me getPay() getMonthlyPay() getName() getEmployeeName() Adaptor Adaptee unaltered Contains an adaptee object an adaptee object Provides own implementation of target’s methods – which call MF18 adaptee’s methods 6/22/2010 F21AS
- MonthlyAdapter public class MonthlyAdapter extends WeeklyEmployee { private MonthlyEmployee me; //composed with adaptee //created with adaptee object public MonthlyAdapter(MonthlyEmployee memp) { me = memp; } //own implementation of target method, //adapting to use adaptee’s instead public String getName() String getName() { return me.getEmployeeName(); } public int getPay() { return me.getMonthlySalary(); } return me } MF19 6/22/2010 F21AS
- Test class Test { public static void main(String arg[]) { WeeklyEmployee we = new WeeklyEmployee (“tim”, 150); PayProcessor.printPay(we); MonthlyEmployee me = me new MonthlyEmployee(“jane”, 200); MonthlyAdapter ma = new MonthlyAdapter (me); PayProcessor.printPay(ma); } } MF20 6/22/2010 F21AS
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Giáo trình HTML và thiết kế website
164 p | 907 | 394
-
Giáo trình CorelDraw - Bài 8
2 p | 153 | 68
-
Vật liệu và màu sắc
31 p | 202 | 65
-
Macromedia Flash - Thanh trượt màu RGB
8 p | 173 | 36
-
Bài giảng Hệ quản trị cơ sở dữ liệu Access chương 5: Form - biểu mẫu
40 p | 163 | 30
-
Chương trình DREAMWEAVER 8 - Bài 16
6 p | 112 | 28
-
Giáo trình CorelDraw 8 - Chương 3
7 p | 141 | 25
-
Tài liệu giảng dạy Adobe Photoshop (Ngành/Nghề: Thiết kế đồ họa – Trình độ Cao đẳng) - Trường CĐ Kinh tế - Kỹ thuật Vinatex TP. HCM (2021)
91 p | 39 | 16
-
Giáo trình CorelDraw 8 - Chương 8
2 p | 104 | 15
-
Giáo trình CorelDraw 8 - Chương 1
3 p | 104 | 15
-
Giáo trình Hệ quản trị cơ sở dữ liệu - Lê Thị Thu (Biên soạn)
116 p | 32 | 12
-
Giáo trình Hệ quản trị cơ sở dữ liệu - Nguyễn Vũ Duy (Biên soạn)
110 p | 65 | 9
-
Tài liệu giảng dạy Adobe Photoshop (Ngành/Nghề: Thiết kế đồ họa – Trình độ Cao đẳng) - Trường CĐ Kinh tế - Kỹ thuật Vinatex TP. HCM (2019)
91 p | 24 | 9
-
Bài giảng Hệ thống thông tin: Chương 8 - GV. Lê Thị Quỳnh Nga
37 p | 99 | 7
-
Giáo trình CorelDraw 8 - Chương 7
5 p | 87 | 5
-
Bài giảng Các mẫu thiết kế hướng đối tượng: Chương 8 - TS. Nguyễn Văn Hiệp
43 p | 60 | 4
-
Phong cách thiết kế trình bày trang web: Phần 2
62 p | 16 | 4
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn