✨Dạng thức thiết kế

Dạng thức thiết kế

Trong kỹ nghệ phần mềm, một dạng thức thiết kế là một giải trình lập lại được cho một dạng vấn đề thường xảy ra trong ngành thiết kế phần mềm. Một dạng thức thiết kế không phải là một thiết kế hoàn tất có thể được chuyển dạng trực tiếp thành mã; nó thực ra là một sự mô tả hay một tiêu bản nhằm chỉ ra cách giải quyết vấn đề mà có thể sử dụng được trong nhiều tình huống khác nhau. Các dạng thức thiết kế hướng đối tượng thường chỉ ra các quan hệ và các mối tương tác giữa các lớp, mà không cần đặc tả rõ các lớp ứng dụng cuối cùng hay các đối tượng có tham gia. Các thuật toán thì không được xem là các dạng thức thiết kế, vì chúng giải quyết các vấn đề tính toán hơn là vấn đề thiết kế.

Lịch sử

Các dạng thức nguyên thủy như là một nguyên lý thiết kế từ ý kiến của Christopher Alexander. Trong năm 1987, Kent Beck và Ward Cunningham đã bắt đầu thử nghiệm với các ý tưởng về việc ứng dụng các dạng thức vào lập trình và trình bày các kết quả của họ tại hội nghị OOPSLA năm đó. Trong những năm kế tiếp Beck, Cunningham và nhiều người khác đã kế tục công việc này.

Các dạng thức thiết kế trở nên phổ biến trong khoa học máy tính sau khi cuốn Design Patterns: Elements of Reusable Object-Oriented Software được phát hành trong năm 1944 (Gamma et al). Cùng năm này, hội nghị Pattern Languages of Programs (tên này có nghĩa là "Các Ngôn ngữ Dạng thức của các Chương trình") đã được tổ chức. Năm sau đó, Portland Pattern Repository (tức là "Trung tâm Dữ liệu Dạng thức Portland") đã được hình thành nhằm hồ sơ hóa các dạng thức thiết kế. Nội hàm của thuật ngữ vẫn còn là một việc bàn cãi cho đến thập niên sau đó.

Ứng dụng

Dạng thức thiết kế có thể đẩy nhanh quá trình phát triển bằng cách cung ứng các kiểm nghiệm và các mẫu hình phát triển đã được chứng minh. Thiết kế phần mềm có tính hiệu quả đòi hỏi cứu xét tới các vấn đề mà nó không thể thấy trước cho đến giai đoạn lắp đặt sau này. Việc tái dụng các dạng thức thiết kế sẽ giúp tránh khỏi các vấn đề tiềm tàng mà chúng có thể gây ra các khó khăn chính và giúp nâng cao khả năng hiểu được cho người viết mã và cho họ các kiến trúc đi cùng với các dạng thức. Thông thường, người ta chỉ hiểu làm thế nào để áp dụng các kĩ thuật thiết kế phần mềm một cách tường minh cho các vấn đề cụ thể. Các kĩ thuật này thì khó để áp dụng lên các vấn đề có điện rộng hơn. Các dạng thức thiết kế cung cấp các lời giải tổng quát, được hồ sơ hóa trong một định dạng mà chúng không đòi hỏi phải dính chặt với các vấn đề riêng biệt. *Các dạng thức thiết kế được hợp thành từ nhiều đề mục. Đặc biệt thú vị là các đề mục Cấu trúc, các Thành phần và Hợp tác. Các mục này mô tả một "mô típ thiết kế": một vi kiến trúc (micro architechture) nguyên mẫu mà các nhà phát triển chép lại và đáp ứng cho các thiết kế riêng của họ để giải quyết vấn đề hiện tại mà đã được mô tả bởi dạng thức thiết kế đó. (Một vi kiến trúc là một bộ các chương trình cấu thành, nghĩa là các lớp, các phương pháp,..., và các quan hệ giữa các cấu thành này). Những người phát triển dùng dạng thức thiết kế này bằng cách dẫn nhập vào các thiết kế của họ cái vi kiến trúc nguyên mẫu này; nghĩa là các vi kiến trúc đó, trong các thiết kế sẽ có cấu trúc và tổ chức tương tự như mô típ thiết kế đã chọn.

  • Thêm vào đó, các dạng thức cho phép các nhà phát triển để liên lạc sử dụng các tên nổi tiếng, đã được hiểu tường tận về các tương tác phần mềm. Các dạng thức thiết kế thông dụng có thể dược nâng cao qua thời gian, tạo thêm các thiết kế mạnh hơn là các thiết kế đặc ứng (ad-hoc).

Phân lớp

Các dạng thức thiết kế có thể được phân lớp dựa trên nhiều tiêu chỉ, điểm chung nhất của chúng là vấn đề cơ sở bên trong mà chúng giải quyết. Theo tiêu chỉ này, các dạng thức thiết kế có thể được phân thành nhiều lớp, một số trong các lớp đó là:

  • Các Dạng thức nền tảng (fundamental pattern)
  • Các Dạng thức kiến tạo (creational pattern)
  • Các Dạng thức cấu trúc (structural pattern)
  • Các Dạng thức ứng xử (behavioral pattern)
  • Các Dạng thức đồng tranh (concurrency pattern)
  • Các Dạng thức kiến trúc (architectural pattern)

Hồ sơ

Hồ sơ cho một dạng thức thiết kế nên chứa đủ thông tin về vấn đề mà dạng thức đó muốn giải quyết, ngữ cảnh mà nó được sử dụng và lời giải đề nghị. Mặc dù vậy, các tác giả sử dụng cách trình bày riêng của họ để viết các dạng thức thiết kế, và các trình bày này thường rập theo những bộ phận trọng yếu. Các tác giả thường bao gồm thêm vào đó các đề mục để cung cấp thêm thông tin, và sắp xếp các bộ phận trọng yếu này vào trong các tiêu chỉ khác nhau, có thể là với các tên khác nhau.

Một định dạng chung được sử dụng bởi "Gang of Four". Nó bao gồm các tiêu chỉ sau: *Tên dạng thức và Phân lớp* Mỗi dạng thức nên có một tên đặc trung và phân biệt để giúp xác định và tham chiếu. Thêm vào đó, dạng thức này nên được phân lớp dựa trên một sự chia như là mô tả trong phần trước. Cách phân lớp này giúp ích trong việc nhận ra và sử dụng dạng thức. Chủ ý: Tiêu chỉ này nên mô tả mục tiêu của dạng thức và lý do để sử dụng nó. Nó rập theo phần vấn đề của dạng thức. Cũng được biết tới như là: Một dạng thức có thể có nhiều tên. Các tên này nên được mô tả trong tiêu chí này. Vận hành: Tiêu chỉ này cung cấp một tình huống xảy ra của vấn dề và ngữ cảnh trong đó dạng thức này có thể được áp dụng. Bằng cách liên hệ giữa vấn đề với ngữ cảnh, tiêu chỉ này chỉ ra khi nào dùng dạng thức. Khả năng ứng dụng: Phần này bao gồm các tình huống trong đó dạng thức này có thể hữu dụng. Nó biểu thị phần ngữ cảnh của dạng thức. Cấu trúc: Một biểu đồ của dạng thức. Các Sơ đồ lớp và các sơ đồ tương tác có thể được dùng cho mục đích này. Các Thành phần: Một danh mục các lớp và đối tượng được sử dụng trong dạng thức này và vai trò của chúng trong thiết kế. Hợp tác: Mô tả làm thế nào các lớp và đối tượng được sử dụng trong dạng thức tương tác với nhau. Các hệ quả: Phần này mô tả các kết quả, các hiệu ứng phụ, và các sự lược mất do việc sử dụng dạng thức. Lắp đặt: Tiêu chỉ này mô tả sự lắp đặt của dạng thức và biểu thị phần giải đáp của dạng thức. Nó cung cấp các kĩ thuật được sử dụng trong việc lắp đặt dạng thức này và cho các cách thức để thiết lập. Mã thí dụ: Một minh họa làm thế nào dạng thức có thể được dùng trong một ngôn ngữ lập trình. Sử dụng đã biết**: Phần này bao gồm các thí dụ về các cách sử dụng trong thực tế của dạng thức này. *Các dạng thức liên hệ: Là phần bao gồm các dạng thức khác có vài sự liên hệ tới dạng thức này, và do đó chúng có thể được sử dụng cùng với dạng thúc này hay là được sử dụng thay vì dạng thức này. Nó cũng bao gồm các tương phản của dạng thức này với các dạng thức tương tự.

Phê bình

Nguyên lý của các dạng thức thiết kế đã bị phê bình bởi một số lãnh vực của khoa học máy tính.

Nhắm tới sai vấn đề

Điều cần thiết cho các dạng thức kết quả từ việc sử dụng các ngôn ngữ máy tính hay các kĩ thuật thiếu khả năng trườu tượng. Bằng ý tưởng "nhân tử hóa", một nguyên lý không nên được sao chép, mà tốt hơn nên là tham chiếu. Nhưng nếu vật nào đó được tham chiếu thay vì sao chép thì sẽ không có "dạng thức" để đánh nhãn và phân loại. (Paul Graham viết trong bản luận văn Revenge of the Nerds (tức là "sự trả thù của những kẻ kỹ tài"):

This practice is not only common, but institutionalized. For example, in the OO world you hear a good deal about "patterns". I wonder if these patterns are not sometimes evidence of case (c), the human compiler, at work. When I see patterns in my programs, I consider it a sign of trouble. The shape of a program should reflect only the problem it needs to solve. Any other regularity in the code is a sign, to me at least, that I'm using abstractions that aren't powerful enough— often that I'm generating by hand the expansions of some macro that I need to write.
:_dịch: Thực nghiệm này không những được thông dụng mà còn được khoa học hoá. Chẳng hạn, trong thế giới OO bạn nghe một ý tưởng về các "dạng thức". Tôi tán thán nếu các dạng thức này đôi khi không phải là bằng chứng của trường hợp (c), trình dịch bằng người, trong công việc. Khi tôi thấy các dạng thức trong các chương trình của mình tôi xem đó là dấu hiệu của sự cố. Hình dáng của mt chương trình chỉ nên phản ảnh vấn đề nó cần giải quyết. Mọi sự chính quy trong mã là dấu hiệu, mà ít nhất đối với tôi, là tôi đang sử dụng những sự trừu tượng mà chúng thường không đủ mạnh đến nỗi tôi đang tạo ra bằng tay các sự mở rộng của các macro mà tôi cần phải viết._

Peter Norvig cho một bàn cãi tương tự cho rằng 16 trong 23 dạng thức trong cuốn Design Patterns ("Các Dạng thức Thiết kế") (mà chủ yếu tập trung trong C++) là đơn giản và loại bỏ được (qua việc hỗ trợ ngôn ngữ trực tiếp) trong Lisp hay trong Dylan.

Các bàn cãi xa hơn được tìm thấy trong bài Portland Pattern Repository.

Thiếu các nền tảng chuẩn

Sự nghiên cứu về các dạng thức thiết kế đã trởo nên quá "đặc ứng" (ad hoc), và một số người cho rằng nguyên lý này cần được chuẩn hóa nhiều hơn. Tại OOPSLA 1999, Gang of Four với sự cồng tác đã đồng thanh chống lại màn xử án, trong đó, họ là những người trách nhiệm chính với các tội phạm chống lại khoa học máy tính. Họ đã bị kết án bởi 2/3 của bồi thẩm đoàn. Một số người cảm thấy rằng sự ảnh hưởng từ lý thuyết tương đối có thể giúp họ tốt hơn là xác định, nghiên cứu, hay chuẩn hoá các dạng thức.

Dẫn tới các lời giải không hiệu quả

Ý tưởng của một dạng thức thiết kế là một nỗ lực để chuẩn hóa cái mà đã được chấp nhận là các thực nghiệm tốt nhất. Trong nguyên tắc, điều này có thể dường như có ích, nhưng trong thực tế, nó thường dẫn tới kết quả trong sự trùng lặp mã một cách không cần thiết. Hầu như luôn luôn là có một lời giải hiệu quả để sử dụng cho sự thiết lập có tính nhân tố tốt đẹp hơn là một dạng thức thiết kế "chỉ vừa đủ tốt".

Nguyên lý cũ và hiển nhiên

Từ khi bắt đầu, các nguyên lý khoa học máy tính đã được đặt tên (như là truy ngược, backtrackting, hay là cây AVL) và được hồ sơ hoá. Các dạng thức như là được giới thiệu trong cuốn Design Patterns được liên hệ đến các hướng dẫn và các nguyên lý liên hệ [http://www.lukew.com/ff/entry.asp?348]. Trong ngành thiết kế cũng đã có các ngành dùng cho tái dụng các cấu trúc thiết kế ([http://rd13doc.cern.ch/Notes/004/Note004-7.html] ).

👁️ 1 | 🔗 | 💖 | ✨ | 🌍 | ⌚
Trong kỹ nghệ phần mềm, một **dạng thức thiết kế** là một giải trình lập lại được cho một dạng vấn đề thường xảy ra trong ngành thiết kế phần mềm. Một dạng thức thiết
phải|nhỏ|400x400px|So sánh một số dạng thức [[bo mạch chủ phổ biến ]] **Dạng thức** hay **yếu tố hình thức** (tiếng Anh: **form factor**) là một khía cạnh của thiết kế phần cứng trong đó xác
**Dạng thức bắc cầu** (_bridge pattern_) là một dạng thức thiết kế được dùng trong công nghệ phần mềm. Dạng thức bắc cầu dùng để _"tách riêng tính trừu tượng ra khỏi thực thể của
nhỏ|217x217px|Một bản vẽ thiết kế thời trang **Thiết kế** là việc tạo ra một bản vẽ hoặc quy ước nhằm tạo dựng một đối tượng, một hệ thống hoặc một tương tác giữa người với
**Dạng thức** (tiếng Anh: form factor) của điện thoại di động là kích thước, hình dạng và kiểu dáng cũng như bố cục và vị trí của các thành phần chính. ## Với một phần
**Thiết kế cho sản xuất đắp dần** (**DfAM **hoặc **DFAM**) là thiết kế để có khả năng sản xuất như được áp dụng cho sản xuất đắp dần (AM). Đó là một loại phương pháp
**Responsive web design** (hay còn gọi **Thiết kế web đáp ứng**) là kiểu mẫu phong cách thiết kế với giao diện, bố cục website thể hiện đẹp, mang tính mỹ thuật với độ hiển thị
Trong công nghệ phần mềm, một **mẫu thiết kế** (tiếng Anh: design pattern) là một giải pháp tổng thể cho các vấn đề chung trong thiết kế phần mềm. Một mẫu thiết kế không phải
Trong thiết kế, tương tác giữa con người- máy tính và sự phát triển phần mềm. **Thiết kế tương tác** thường được viết tắt là **IxD**, được định nghĩa là sự ứng dụng của thiết
**Thiết kế đô thị** (tiếng Anh: _urban design_) là việc cụ thể hóa nội dung quy hoạch chung, quy hoạch chi tiết xây dựng đô thị về mặt tổ chức không gian chức năng bên
thumb|Nội thất theo phong cách [[art déco tại phòng chờ lớn thuộc Nhà ga 30th Street ở Philadelphia, Pennsylvania, Hoa Kỳ.]] thumb|right|Phòng chờ của Khách sạn Bristol, [[Warsaw]] **Thiết kế nội thất** là lĩnh vực
nhỏ| Một nguyên mẫu bằng giấy được thực hiện như một phần của quy trình thiết kế trò chơi video _[[Kim cương tin cậy của Luân Đôn|Diamond Trust of London_ ]] **Thiết kế trò chơi**
**Nhà thiết kế thời trang** () hay **nhà tạo mốt** () là người làm nghề tạo mẫu, chịu trách nhiệm thiết kế mẫu trang phục (tức các dạng mẫu vải khác nhau) để hiện thực
**Thiết kế truyền thông** là một ngành học kết hợp giữa thiết kế và phát triển thông tin mà nó quan tâm đến việc các phương tiện truyền thông liên quan như in ấn, sáng
**Nhà thiết kế đồ họa** (tiếng Anh: _graphic designer_), đôi khi còn gọi là **nghệ sĩ đồ họa** (tiếng Anh: _graphic artist_), là một chuyên gia trong ngành thiết kế đồ họa và nghệ thuật
nhỏ|Roi của [[vi khuẩn thường được xem là dẫn chứng cho hệ thống phức tạp không thể giản lược mà những người theo Thiết kế thông minh cho rằng không thể hình thành qua chọn
**Nhà thiết kế và chế tạo sản phẩm theo đơn đặt hàng** (thường gọi tắt là **ODM**, viết tắt của _Original design manufacturer_) là một công ty thiết kế và sản xuất một sản phẩm,
Combo 3 Hộp Đựng Thực Phẩm STORE WARE - Với Thiết kế Nắp Vặn Dễ Dàng Sử Dụng , Khả Năng Chịu Nhiệt Cao , Lớp Nhựa PP Dày Dặn Mang Lại Độ Bền Cho
Tư duy thiết kế, hay làm việc theo định hướng thiết kế, là một phương pháp giải quyết vấn đề đặc biệt phù hợp để giải quyết các vấn đề phức tạp (“khó nhằn”). Phương
Tư duy thiết kế có thể là một công cụ tuyệt vời trong việc thiết kế cuộc sống của bạn. Tư duy thiết kế đã giúp tôi tạo ra các sản phẩm mới, hình dung
Bút Kẻ Mắt Nước Dầu Cọ Bóng Mịn Sắc Xảo Tiny Tip Eyeliner Carbon Black Australis ÚcTiny Tip Eyeliner Carbon Black - Bút kẻ mắt nước dầu cọ bóng mịn sắc xảo là sản phẩm
MÔ TẢ SẢN PHẨM Ấp ủ ý tưởng về bộ sưu tập nước hoa khô Ký Ức Mùi Hương - mỗi mùi hương lại ẩn mình trong một câu chuyện xưa cũ đã trở thành
**Mẫu** là một dạng, một khuôn thức, hay một mô hình (một cách trừu tượng, là một tập hợp các quy tắc) mà có thể dùng để làm ra hay tạo nên những sự vật
Đổi mới đang trở nên hẹp hơn và nhanh hơn, giới hạn trong viễn cảnh của Thung lũng Silicon và khóa hầu hết mọi người lại vì nó vượt xa khả năng đầu vào của
Tư duy thiết kế (DT) là chủ đề của nhiều cuộc tranh luận và ứng dụng rộng rãi trên nhiều lĩnh vực kiến ​​thức khác nhau, bao gồm cả lĩnh vực thực phẩm; tuy nhiên,
Hãy khám phá lĩnh vực Nghiên cứu tình huống thành công về tư duy thiết kế để khám phá sức mạnh của phương pháp giải quyết vấn đề sáng tạo này. Hãy khám phá lĩnh
Tư duy thiết kế (DT) là chủ đề của nhiều cuộc tranh luận và ứng dụng rộng rãi trên nhiều lĩnh vực kiến ​​thức khác nhau, bao gồm cả lĩnh vực thực phẩm; tuy nhiên,
Hãy khám phá lĩnh vực Nghiên cứu tình huống thành công về tư duy thiết kế để khám phá sức mạnh của phương pháp giải quyết vấn đề sáng tạo này. Bắt đầu bằng cách
Các chuyên gia thiết kế người Đan Mạch Christian Bason và Jens Martin Skibsted cho biết nhân loại cần có một cái nhìn rộng mở hơn về giải quyết vấn đề một cái nhìn ít
Tìm hiểu tư duy thiết kế là gì, quy trình thực hiện tư duy thiết kế và cách người quản lý dự án có thể triển khai tư duy thiết kế vào công việc của
Các chuyên gia thiết kế người Đan Mạch Christian Bason và Jens Martin Skibsted cho biết nhân loại cần có một cái nhìn rộng mở hơn về giải quyết vấn đề một cái nhìn ít
Nước hoa tinh dầu Dubai thiết kế – Mẫu thiết kế hình con công tinh tếNước hoa tinh dầu Dubai giới thiệu– Tinh dầu là cái tên được nhiều người tìm kiếm hiện nay. Một
Tóm tắt Tư duy thiết kế đã trở thành một hiện tượng trong nhiều lĩnh vực, bao gồm cả lĩnh vực giáo dục. Tư duy thiết kế đã trở thành một phần của hầu hết
Trong một thế giới mà trí tuệ nhân tạo, được minh họa bằng các công cụ như ChatGPT, đang định hình lại thế giới của chúng ta, thì sự tiếp xúc của con người với
Các chuyên gia thiết kế người Đan Mạch Christian Bason và Jens Martin Skibsted cho biết nhân loại cần có một cái nhìn rộng mở hơn về giải quyết vấn đề một cái nhìn ít
Nước hoa tinh dầu Dubai thiết kế mẫu thiết kế hình con công tinh tế 15ml, tinh dầu nước hoa Dubai dạng cổ tròn 15 ml và dạng set 5 ml✅ CAM KẾT & CHÍNH
Nước hoa tinh dầu Dubai thiết kế mẫu thiết kế hình con công tinh tế 15ml, tinh dầu nước hoa Dubai dạng cổ tròn 15 ml và dạng set 5 ml✅ CAM KẾT & CHÍNH
Trong hơn 50 năm qua, Nike đã là người dẫn đầu trong danh mục giày thể thao vì lý do đơn giản là các thiết kế của họ được nghiên cứu kỹ lưỡng, chi tiết
Nếu giống như tôi, bạn sinh vào những năm 80 và theo học trường thiết kế vào giữa những năm 2000, có lẽ bạn đã được dạy một số hình thức tư duy thiết kế.
Nếu giống như tôi, bạn sinh vào những năm 80 và theo học trường thiết kế vào giữa những năm 2000, có lẽ bạn đã được dạy một số hình thức tư duy thiết kế.
Trong hơn 50 năm qua, Nike đã là người dẫn đầu trong danh mục giày thể thao vì lý do đơn giản là các thiết kế của họ được nghiên cứu kỹ lưỡng, chi tiết
**Phần mềm thiết kế mạch in** là phần mềm dùng cho thiết kế ra **bảng mạch in** dựa trên sơ đồ mạch điện cho trước. Nó gồm có thực hiện bố trí vị trí các
🌹BÌNH XỊT DẦU ĂN DẠNG CHAI Thủy Tinh TIỆN DỤNG - HÀNG VỀ SẴN KHO ---------------------------- 🌼Dầu ăn có mặt hầu hết trong các món ăn của người Việt Nam từ chiên xào, nấu, nướng.
CHẤT TỪ TRONG RA NGOÀI LUÔN Ạ/-heart /-heart /-heart sỉ 103k /1 hộp ạ E gom 1-2 ngay hang về Khách hỏi mãi giờ hàng mới về Tinh Dầu Nước Hoa DUBAI sản phẩm tuyệt
AUS ExpertBook B5 là một chiếc laptop được ASUS ra mắt nhằm hướng đến người dùng doanh nhân với thiết kế có tính di động cao cùng hiệu năng mạnh mẽ hứa hẹn sẽ là
#DesignThinking là một phương pháp tiếp cận có giá trị đối với các công ty muốn giải quyết các vấn đề thực tế về Môi trường, Xã hội và Quản trị (#ESG). Sau đây là
Tư duy thiết kế không chỉ là một phương pháp giải quyết vấn đề, mà còn là một khuôn khổ có thể định hình lại cách học sinh suy nghĩ và học tập trong thế
Các nhà giáo dục trường công ngày càng coi tư duy thiết kế là một kỹ năng hướng tới tương lai cần được dạy ngay từ khi còn nhỏ, nhưng cần có sự nỗ lực
Khi chúng ta đi sâu vào tương lai của tư duy thiết kế và đổi mới, điều cần thiết là phải nhận ra rằng những lĩnh vực này không tĩnh tại; chúng năng động và
Sức mạnh thực sự của Tư duy thiết kế không nằm ở phương pháp luận của nó mà nằm ở tiềm năng định hình lại cơ bản cách học sinh suy nghĩ và tiếp cận