intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Chương 8: Mẫu thiết kế

Chia sẻ: No Comment | Ngày: | Loại File: PDF | Số trang:38

96
lượt xem
16
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

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 đề

Chủ đề:
Lưu

Nội dung Text: Chương 8: Mẫu thiết kế

  1. Chương 8: Mẫu thiết kế (pattern) (patte UML/NN 1
  2. 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
  3. 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
  4. 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
  5. 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
  6. 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
  7. …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
  8. 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
  9. 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
  10. Singleton (kiến tạo) Singleton static uniqueInstance uniqueInstance return uniqueinstance singletonData static Instance() Instance() SingletonOp() GetSingletonData() CS 406: 10 Design Patterns
  11. 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
  12. 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
  13. Adapter Có 2 mẫu: Mẫu cấu trúc Class Mẫu Cấu trúc Object MF13 6/22/2010 F21AS
  14. Adapter1 Adaptee Target Client request() specificRequest() Adapter request() Đa thừa kế MF14 6/22/2010 F21AS
  15. Adapter2 Client Target request() Adapter Adaptee request() specificRequest() MF15 6/22/2010 F21AS
  16. 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
  17. ? PayProcessor client printPay(WeeklyEmp adaptee loyee e) ? WeeklyEmployee MonthlyEmployee target getName() getEmployeeName() getPay() getMonthlySalary() MF17 6/22/2010 F21AS
  18. 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
  19. 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
  20. 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
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2