Page 53 - Ký sự code dạo
P. 53

LẬP	TRÌNH	VIÊN	ĐÂU	PHẢI	CHỈ	BIẾT	CODE



                             3.	Liskov	Substitution	Principle
                             Nguyên	lý	thứ	ba,	tương	ứng	với	chữ	L	trong	SOLID.	Nội	dung	nguyên
                             lý:
                                     Trong	một	chương	trình,	các	object	của	class	con	có	thể	thay
                                     thế	class	cha	mà	không	làm	thay	đổi	tính	đúng	đắn	của	chương
                                     trình
                             Hơi	khó	hiểu	nhỉ?	Không	sao,	lúc	mới	đọc	mình	cũng	vậy.	Hãy	tưởng
                             tượng	bạn	có	1	class	cha	tên	Vịt.	Các	class	VịtBầu,	VịtXiêm	có	thể	kế
                             thừa	class	này,	chương	trình	chạy	bình	thường.	Tuy	nhiên	nếu	ta	viết
                             class	VịtChạyPin,	cần	pin	mới	chạy	được.	Khi	class	này	kế	thừa	class
                             Vịt,	vì	không	có	pin	không	chạy	được,	sẽ	gây	lỗi.	Đó	là	1	trường	hợp	vi
                             phạm	nguyên	lý	này.

                             4.	Interface	Segregation	Principle
                             Nguyên	lý	thứ	tư,	tương	ứng	với	chữ	I	trong	SOLID.	Nội	dung	nguyên
                             lý:
                                     Thay	 vì	 dùng	 một	 interface	 lớn,	 ta	 nên	 tách	 thành	 nhiều
                                     interface	nhỏ,	với	nhiều	mục	đích	cụ	thể

                             Nguyên	lý	này	khá	dễ	hiểu.	Hãy	tưởng	tượng	chúng	ta	có	1	interface
                             lớn	với	khoảng	100	methods.	Việc	implement	sẽ	khá	cực	khổ,	ngoài	ra
                             còn	có	thể	dư	thừa	vì	1	class	không	cần	dùng	hết	100	method.	Khi	tách
                             interface	ra	thành	nhiều	interface	nhỏ,	gồm	các	method	liên	quan	tới
                             nhau,	việc	implement	và	quản	lý	sẽ	dễ	hơn.
                             5.	Dependency	Inversion	Principle

                             Nguyên	 lý	 cuối	 cùng,	 tương	ứng	 với	 chữ	D	trong	 SOLID.	 Nội	 dung
                             nguyên	lý:

                                     1.	Các	module	cấp	cao	không	nên	phụ	thuộc	vào	các	module	cấp
                                     thấp.	Cả	2	nên	phụ	thuộc	vào	abstraction.
                                     2.	Interface	(abstraction)	không	nên	phụ	thuộc	vào	chi	tiết,	mà
                                     ngược	lại.	(Các	class	giao	tiếp	với	nhau	thông	qua	interface,
                                     không	phải	thông	qua	implementation.)
                             Nguyên	lý	này	khá	lắt	léo,	mình	sẽ	lấy	ví	dụ	thực	tế.	Chúng	ta	đều	biết
                             2	loại	đèn:	đèn	tròn	và	đèn	huỳnh	quang.	Chúng	cùng	có	đuôi	tròn,




                                                                51
   48   49   50   51   52   53   54   55   56   57   58