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


All Rights Reserved