1. Trang chủ
  2. » Công Nghệ Thông Tin

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

38 146 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 38
Dung lượng 234,84 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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 y y đổi „ Phần mềm không nhìn thấy được invisible „ Phần mềm không nhìn thấy đ

Trang 1

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

Trang 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 y y đổi

„ Phần mềm không nhìn thấy được (invisible)

„ Phần mềm không nhìn thấy được (invisible)

Trang 4

Nguyên lý thiết kế lớp

nhưng đóng với việc sửa code

thay thế bằng lớp con kế thừa

vào trừu tương không phụ thuộc vào chi tiết (kiến

vào trừu tương không phụ thuộc vào chi tiết (kiến trúc phân tầng quá nhiều sẽ bất lợi)

Principle): Nên tách giao diện (vd có chức năng

chung) dùng chung thành nhiều đặc thù

Trang 5

Mẫu thiết kế (Design Pattern)

giải quyết vấn đề và những mẫu tương ứng để giải

giải quyết vấn đề và những mẫu tương ứng để giải quyết vấn đề

Trang 6

„ Tên mẫu (Pattern name) - describes the essence of the pattern in a 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

„ Sự thúc đẩy (Motivation) - provides an example of the problem

„ Khả năng vận dụng (Applicability) g ậ ụ g ( pp y) - notes specific p

design situations in which the pattern is applicable

Trang 7

„ Cấu trúc (Structure) - describes the classes that are

required to implement the pattern q p p

„ Lớp tham gia (Participants) - describes the

responsibilities of the classes that are required to implement the pattern

„ Cộng tác (Collaborations) - describes how the

participants collaborate to carry out their responsibilities

„ Hệ quả (Consequences) - describes the “design forces”

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

g p

Trang 8

Các mẫu thiết kế

„ Creational Pattern (Mẫu kiến tạo):

Trang 9

Mẫu thiết kế Singleton

„ Cho phép có một thể hiện của lớp Vd: Find

Di l U ik ột đối tượ t à lư

Dialog, Unikey, một đối tượng toàn cục lưu

giữ kết nối CSDL…

Trang 10

Singleton (kiến tạo)

Trang 13

„ Có 2 mẫu:

Trang 16

PayProcessor WeeklyEmployee

printPay(WeeklyEmp loyee e)

getName() getPay()

Trang 17

PayProcessor printPay(WeeklyEmp

WeeklyEmployee

getName() getPay()

target

Trang 18

getName() getMonthlyPay()getEmployeeName()

Adaptee unaltered

Adaptor Contains an adaptee object

Contains an adaptee object Provides own implementation of target’s methods – which call adaptee’s methods

Trang 19

//created with adaptee object

public MonthlyAdapter(MonthlyEmployee memp)

{ me = memp; }

//own implementation of target method,

//adapting to use adaptee’s instead

public String getName()

public String getName()

Trang 21

Mẫu thiết kế Observer (hành vi)

„ Bài toán thực tế: Một đối tượng thời gian để

đế iờ đượ thể hiệ dưới hiề hì h thứ

đếm giờ được thể hiện dưới nhiều hình thức như đồng hồ số, đồng hồ kim… Ta có thể

hiện của thời gian đều thay đổi theo

Trang 22

đổi trạng thái các đối tượng khác phụ thuộc sẽ được

đổi trạng thái các đối tượng khác phụ thuộc sẽ được biến đổi tự động

tượng có liên quan

„ Khi có 2 hướng một cái phụ thuộc vào một cái khác

„ Khi một biến đổi tới một đối tượng đòi hỏi biến đổi những ộ ộ ợ g g đối tượng khác mà không biết bao nhiêu đối tượng cần

biến đổi

Khi ột đối tượ hải ó khả ă thô bá tới đối

„ Khi một đối tượng phải có khả năng thông báo tới đối

tượng khác mà không cần biết rõ chúng

Trang 23

Mô hình Observer

A D

Trang 24

subjectState

Trang 25

Observer– Sequence Diagram

SetState()

Notify() Update()

GetState()

Update()

GetState()

Trang 27

virtual void Attach(Observer *); ( );

virtual void Detach(Observer *);

virtual void Notify();

Trang 28

for (i.First(); !i.IsDone(); i.Next()) {

i C tIt () >U d t (thi )

i.CurrentItem()->Update(this);

} }

Trang 29

class ClockTimer : public Subject { public:

ClockTimer();

virtual int GetHour();

virtual int GetMinute();

virtual int GetSecond();

void Tick();

}

void ClockTimer :: Tick() { // update internal time-keeping state //…

Notify(); y();

}

Trang 31

void DigitalClock :: Draw() {

// get the new values from the subject int hour = _subject->GetHour();

int minute = _subject->GetMinute();

// … //draw the digital clock }

// main

ClockTimer *timer = new ClockTimer;

AnalogClock * analogClock = new AnalogClock(timer);

DigitalClock * digitalClock = new DigitalClcok(timer);

Trang 32

Observer C# (tham khao file project)

_observer = new ArrayList();

} public void Attach(Observer o) {

for (int i = 0; i < _observer.Count; i++) {

((Observer)_observer[i]).Update(this);

(( )_ [ ]) p ( );

} } }

Trang 33

Mẫu thiết kế Composite (kiến trúc)

„ Bài toán thực tế: Một máy có các chi tiết

á á hi tiết á ó thể ồ á hi tiết

máy, các chi tiết máy có thể gồm các chi tiết máy đơn giản (chi tiết máy đơn) và có thể có

hư hi tiết á ( hi tiết á hứ ) à

nhưng chi tiết máy (chi tiết máy phức) mà

gồm có những chi tiết máy đơn và các chi

tiết á hứ khá

tiết máy phức khác

giá trị máy bằng giá trị của các chi tiết máy đơn

và giá trị của chi tiết máy phức (bằng tất cả giá trị của các chi tiết)

trị của các chi tiết)

Trang 34

„ Intent (mục đích): Compose objects into tree structures to

represent part-whole hierarchies Let clients treat individual p pa o a a d dua

objects and compositions of objects uniformly

„ Motivation (sự thúc đẩy): components can be grouped to form larger components

aPicture

aPicture aLIne aRectangle

aText aLine aRectangle

Trang 35

Ví dụ 1

Draw() Add(Graphic) Remove(Graphic) GetChild(int)

GetChild(int)

Trang 36

Ví dụ 2

Operation() Add(Component) Remove(Component) GetChild(int)

Leaf

Composite

Operation()

Operation() Add(Component) Remove(Component)

GetChild(int)

Trang 37

Cộng tác

„ Client tương tác với các đối tượng trong cấu trúc kết hợp qua interface lớp kết hợp

„ Nếu đối tượng nhận là lá thì xử lý trực tiếp ợ g ậ ý ự p

„ Nếu đối tượng nhận là một nốt kết hợp thì

chuyển yêu cầu tới thành phần con của nó

Ngày đăng: 25/07/2014, 16:20

TỪ KHÓA LIÊN QUAN