Software design pattern
Mục lục bài viết
1. Software design pattern là gì ?
Trong Lĩnh vực cồng nghệ phần mềm:
– Design pattern là một giải pháp cho một vấn đề thường xuyên xảy ra hoặc cho một bối cảnh nhất định trong việc thiết kế phần mềm.
– Một vấn đề mà coder rất hay gặp phải trong nhiều project và có một giải pháp tối ưu để giải quyết vấn đề đó, giải pháp đó được mô tả là Design pattern.
– Design pattern không phụ thuộc vào ngôn ngữ lập trình mà nên hiểu rằng nó giống như một thuật toán có thể áp dụng cho mọi loại ngôn ngữ lập trình, thì Parttern cũng là một mô tả để giải quyết các vấn đề liên quan tới OOP (object-oriented programing)
**2. Có bắt buộc phải sử dụng design pattern khi lập trình ? **
- Những lập trình viên tốt không phải là người biết nhiều Programing-language nhưng họ luôn hiểu biết rất nhiều về Algorithm và có thể cả design pattern (My personal views). vì vậy hiểu thêm về design pattern có lẽ sẽ tôt hơn công việc của bạn.
- Có thể trong khi lập trình bạn đã và đang sử dụng design pattern nhưng bạn không hề biết mình đang áp dụng nó, vì vậy hãy dành 15 phút uống cafe và hiểu hơn về nó cùng em, vì thực sự em cũng k hiểu quá sâu về nó, em viết ra để tất cả chúng ta cùng thảo luận ak.
3. Có bao nhiêu design pattern ?
- SUN giới thiệu GOF (Gang Of Four–four pioneer guys who wrote a book named “Design Patterns”- Elements of Reusable Object-Oriented Software), cuốn sách hay để học design pattern
- Wiki nói rằng có 250 loại design parttern khác nhau nhưng mà cũng chỉ có 23 loại là được biết đến nhiều nhất và cũng được dùng nhiều nhất và cũng chỉ 23 là đủ rồi ạ, 23 parttern đó đc giới thiệu bởi GOF
- https://en.wikipedia.org/wiki/Design_Patterns
4. Các loại design pattern .
- Creational Patterns :Tạo ta Instant của Class một cách gián tiếp.
- Structural Patterns : Tập trung vào thiết kế và sử dụng các khái niệm kế thừa trong OOP.
- Behavioral Patterns: Tập trung vào việc giao tiếp giữa các Object.
**5. Bài toán cụ thể với “Factory Design Pattern” **
Factory Design Parttern: là cách để tạo ra Object của class mà che dấu đi việc khởi tạo instant của một class, và các đối tượng đề được khởi tạo thông qua một giao diện chung.
a. Tạo Module Shape.rb
module
Shape
def
draw
end
end
b. Tạo class Circle.rb
require
"./Shape"
class
Circle
include
Shape
def
draw
p "Draw Circle"
end
end
c. Tạo class Rectangle.rb
require
"./Shape"
class
Rectangle
include
Shape
def
draw
p "Draw Rectangle"
end
end
d. Tạo class ShapeFactory.rb
require
"./Circle"
require
"./Rectangle"
class
ShapeFactory
def
getShape
shapeType
if
shapeType ==
nil
return
nil
end
if
shapeType ==
"circle"
return
Circle
.
new
elsif
shapeType ==
"rectangle"
return
Rectangle
.
new
end
return
nil
end
end
e. Test kết quả:
Tạo file main.rb
require
"./ShapeFactory"
require
"./Interface"
sha =
ShapeFactory
.
new
sha1 =
sha.
getShape "circle"
sha2 =
sha.
getShape "rectangle"
sha1.
draw
sha2.
draw
Chạy demo :
$ ruby main.rb
#Result
$ Draw Circle
$ Draw Rectangle
**The end **
(thankyou) for reading.
I am not good at this field, so I am just reckless post this article so that we can discus together.
Please leave a comment, give me a helpful tip or advice, many thanks !!!