Categories
Software Architecture

Các Mẫu Thiết Kế 1: Giới Thiệu Mẫu Thiết Kế

Định nghĩa

  • Một mẫu là một giải pháp lặp lại cho một vấn đề tiêu chuẩn, trong một ngữ cảnh.
  • Christopher Alexander, giáo sư kiến trúc…
    • Tại sao những gì mà một chuyên gia về kiến trúc nói lại có liên quan đến phần mềm?
    • “Một mẫu mô tả một vấn đề xảy ra lặp đi lặp lại trong môi trường của chúng ta, và sau đó mô tả cốt lõi của giải pháp cho vấn đề đó, theo cách mà bạn có thể sử dụng giải pháp này hàng triệu lần mà không bao giờ thực hiện theo cùng một cách hai lần. ”
  • Jim Coplien, một kỹ sư phần mềm: “Tôi muốn liên hệ định nghĩa này với các mẫu trang phục…”
    • Các mẫu trang phục là gì?
    • “… Tôi có thể cho bạn biết cách làm một chiếc váy bằng cách chỉ định tuyến đường của một cái kéo xuyên qua một mảnh vải về góc độ và độ dài của vết cắt. Hoặc, tôi có thể cung cấp cho bạn một mẫu. Đọc đặc tả, bạn sẽ không biết những gì đang được xây dựng hoặc nếu bạn đã xây dựng đúng thứ khi bạn hoàn thành. Hình mẫu báo trước sản phẩm: đó là quy tắc để tạo ra sản phẩm, nhưng ở nhiều khía cạnh, nó cũng chính là bản thân sản phẩm.”

Các mẫu trong kỹ thuật

  • Các kỹ sư khác tìm và sử dụng các mẫu như thế nào?
    • Các ngành kỹ thuật trưởng thành có sổ tay mô tả các giải pháp thành công cho các vấn đề đã biết
    • Các nhà thiết kế ô tô không thiết kế ô tô từ đầu bằng cách sử dụng các định luật vật lý
    • Thay vào đó, họ sử dụng lại các thiết kế tiêu chuẩn với hồ sơ thành công, học hỏi từ kinh nghiệm
    • Các kỹ sư phần mềm có nên sử dụng các mẫu? Tại sao?
    • “Hãy chắc chắn rằng bạn làm mọi thứ theo khuôn mẫu mà tôi đã chỉ cho bạn ở đây trên núi.” Exodus 25:40.
  • Việc phát triển phần mềm từ đầu cũng rất tốn kém
    • Các mẫu hỗ trợ tái sử dụng kiến trúc và thiết kế phần mềm

“Nhóm bốn người” (GoF)

  • Erich Gamma, Richard Helm, Ralph Johnson & John Vlissides (Addison-Wesley, 1995)
    • Sách Design Patterns liệt kê 23 mẫu khác nhau như các giải pháp cho các lớp vấn đề khác nhau, trong C++ & Smalltalk
    • Các vấn đề và giải pháp có thể áp dụng rộng rãi, được nhiều người sử dụng trong nhiều năm
      • Các mẫu đề xuất cơ hội sử dụng lại trong phân tích, thiết kế và lập trình
    • GOF trình bày từng mẫu ở định dạng có cấu trúc

Các yếu tố của Mẫu thiết kế

  • Mẫu thiết kế có 4 yếu tố cần thiết:
    • Tên mẫu: tăng vốn từ vựng của người thiết kế
    • Vấn đề: ý định, ngữ cảnh, khi nào áp dụng
    • Giải pháp: Cấu trúc giống UML, mã trừu tượng
    • Hệ quả: kết quả và sự cân bằng

Mẫu thiết kế KHÔNG phải là

  • Cấu trúc dữ liệu có thể được mã hóa trong các lớp và được sử dụng lại như cũ (ví dụ, danh sách được liên kết, bảng băm)
  • Các thiết kế miền cụ thể phức tạp (cho toàn bộ ứng dụng hoặc hệ thống con)
  • Nếu chúng không phải là cấu trúc dữ liệu quen thuộc hoặc các hệ thống con dành riêng cho miền phức tạp, chúng là gì?
  • Chúng là:
    • “Mô tả các đối tượng và lớp giao tiếp được tùy chỉnh để giải quyết một vấn đề thiết kế chung trong một bối cảnh cụ thể.”

Mẫu Observer

  • Mục đích:
    • Xác định sự phụ thuộc một đến nhiều giữa các đối tượng để khi một đối tượng thay đổi trạng thái, tất cả các đối tượng phụ thuộc của nó sẽ được thông báo và cập nhật tự động
  • Được sử dụng trong khuôn khổ Model-View-Controller
    • Model là miền vấn đề
    • View là hệ thống cửa sổ
    • Controller là điều khiển chuột / bàn phím

Cấu trúc của mẫu Observer

Cấu trúc của mẫu Observer.

Leave a Reply

Your email address will not be published. Required fields are marked *