Software design pattern

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.

factory_pattern_uml_diagram.jpg

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 !!!