Software design pattern
design
29
oop
15
White

Lê Minh Tuấn viết ngày 17/07/2015

alt text

1. Software design pattern là gì ?

2. Có bắt buộc phải sử dụng design pattern khi lập trình ?

3. Có bao nhiêu design pattern ?

5. Bài toán cụ thể với "Factory Design Pattern"

Lets get started.

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.

alt text

Step1: Tạo Module Shape.rb

module Shape
  def draw
  end
end

Step2 : Tạo class Circle.rb

require "./Shape"
class Circle
  include Shape
  def draw
    p "Draw Circle"
  end
end

Step 3: Tạo class Rectangle.rb

require "./Shape"
class Rectangle
  include Shape
  def draw
    p "Draw Rectangle"
  end
end

Step 4: 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

Step 5: Test kết quả

Taoj file main.rb

require "./ShapeFactory"
require "./Interface"

sha = ShapeFactory.new
sha1 = sha.getShape "circle"
sha2 = sha.getShape "rectangle"

sha1.draw
sha2.draw

Run

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

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

Lê Minh Tuấn

11 bài viết.
23 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
17 8
(Ảnh) 1. Elasticsearch là gì ??? 2. ElasticSearch dùng cho những ứng dụng nào ??? 3. Vấn đề : Hiện nay tất cả các hệ thống thông tin (hay c...
Lê Minh Tuấn viết 3 năm trước
17 8
White
15 2
1. Maven là gì? 2. Maven hoạt động như nào? 3. Tại Sao cần Maven? 4. Cài đặt Maven 5. Khởi tạo một Project Java bằng Maven 6. Cấu trúc POM.xml...
Lê Minh Tuấn viết 3 năm trước
15 2
White
13 5
1. Javascript FUNCTIONAL OR OBJECT ORIENTED? 2. JavaScript, object oriented? 3. Nodejs require exports vs module.exports 4. Referrence Trả lời: ...
Lê Minh Tuấn viết 2 năm trước
13 5
Bài viết liên quan
White
0 0
Clojure là ngôn ngữ functional có hỗ trợ OOP. Về mặt khoa học máy tính, có nhiều cách để thực hiện đa hình. Ở phiên bản trước 1.2, đa hình trong Cl...
Ngoc Dao viết hơn 2 năm trước
0 0
White
62 5
Đây là phần cuối của một series chuyên về thiết kế UI. Bạn nên đọc (Link) trước khi bắt đầu đọc phần này. Luật số 7: "Ăn trộm" như là một nghệ sỹ...
Vu Nhat Minh viết gần 3 năm trước
62 5
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
11 bài viết.
23 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!