Trong thiết kế máy tính, shim là một trong thư viện bé dại rất có thể ngăn API một bí quyết trong suốt, biến đổi các tđắm say số được truyền, xử trí bao gồm hoạt động hoặc chuyển làn phân cách chuyển động làm việc chỗ khác. Shims hay lộ diện lúc hành vi của API biến hóa, do đó gây nên sự cố gắng tương thích cho các vận dụng cũ vẫn nhờ vào chức năng cũ rộng. Trong đông đảo ngôi trường hợp này, API cũ hơn vẫn hoàn toàn có thể được hỗ trợ vị một tờ tương thích mỏng mảnh bên trên mã new rộng. Shims cũng hoàn toàn có thể được sử dụng để chạy các chương trình bên trên những nền tảng gốc rễ phần mềm khác nhau mà bọn chúng được cách tân và phát triển.

Bạn đang xem: Shim là gì


— Prasoon Saurav mối cung cấp
82
Câu vấn đáp này sẽ không khác gì triển khai kiếm tìm tìm google thực tế trên wikipedia. Một ví dụ vẫn giỏi đẹp mắt.
— dance2die
4
Điều này nghe có vẻ nhỏng câu hỏi áp dụng mẫu mã xây dựng Facade nhằm giao quẹt các thư viện.
— blz
84

Thuật ngữ "shim" như được định nghĩa trong Wikipedia về khía cạnh kỹ thuật sẽ được phân loại, dựa vào khái niệm của nó, nlỗi là một trong những mẫu mã kiến thiết "Kết cấu". phần lớn giao diện mẫu xây cất của cấu trúc mạng được diễn tả tương đối cụ thể vào quy mô kiến thiết phần mềm phía đối tượng (một số trong những tín đồ đang nói là defacto) xem thêm "Mẫu kiến tạo, những yếu tố của phần mềm hướng đối tượng người dùng hoàn toàn có thể tái sử dụng" được gọi là "Gang of Four" .

Văn uống bản "Gang of Four" tổng quát ít nhất 3 mẫu mã được thiết lập giỏi, được Điện thoại tư vấn là "Proxy", "Adaptor" với "Facade", tất cả mọi cung ứng tác dụng nhiều loại loại shyên ổn shlặng. Trong hầu như các nghành nghề, việc thực hiện với bỏ dở việc thực hiện các từ bỏ viết tắt không giống nhau cho và một có mang cội khiến cho những tín đồ nhầm lẫn. Sử dụng từ "shim shim" để bộc lộ các mẫu kiến thiết "Proxy" , "Bộ điều hợp" với "Mặt tiền" ví dụ hơn là một ví dụ cụ thể về loại tình huống này. "Shim" dễ dàng là 1 trong thuật ngữ tầm thường rộng cho các nhiều loại "Cấu trúc" cụ thể rộng "Proxy", "Adaptor", "Facade" cùng rất có thể các loại khác.


— Doug nguồn
5
Câu vấn đáp này cho rằng shyên ổn là một trong mẫu mã thiết kế (một trong những siêu nhiều), khắc tên cho một vài chủng loại xây dựng tương tự như với liên tục nói về phong thái hầu như fan bị lầm lẫn bởi các trường đoản cú viết tắt không giống nhau. Nhưng nó ko thực thụ trả lời thắc mắc ban sơ về shlặng là gì, nó làm cái gi hoặc thực hiện thế nào.
— Richie Thomas
53
Giải ưng ý dễ dàng và đơn giản qua phyên ổn hoạt hình

Một ví dụ về shim:

*

Tóm lược

Lưu ý: sự giống như bị mệt mỏi. Thông thường Ralph sẽ cảm nhận CHÍNH XÁC hồ hết gì anh ta từng trải - tuy nhiên qui định của CÁCH nó thu được là điều mà lại anh ta có thể ko ý muốn ngóng.

Một shyên ổn là một vài mã quan tâm tới những gì được hỏi (bằng phương pháp "đánh chặn"), nhưng mà không người nào thận trọng hơn về nó. Đây là khái niệm chung. Bây tiếng bạn sẽ rất có thể phát âm với đọc mục wikipedia trên shims.


— Bác sĩ phẫu thuật mổ xoang nguồn
13

Về bắt đầu của từ bỏ, tiện ích từ bỏ điển của Apple

noun a washer or thin strip of material used to align parts, make them fit, or reduce wear.verb ( shimmed, shimming) < trans. > wedge (something) or fill up (a space) with a shim.ORIGIN early 18th cent.: of unknown originĐiều này còn có vẻ cân xứng hơi xuất sắc cùng với biện pháp những bên thi công web áp dụng thuật ngữ này.


— Thilo nguồn
13

Các miếng chêm được thực hiện trong .net 4.5 Microsoft Fakes framework nhằm bóc áp dụng của bạn ngoài những nhiều khác để thể nghiệm đơn vị . Shims chuyển sang làn đường khác những cuộc điện thoại tư vấn cho các cách thức cụ thể để mã mà chúng ta viết như một phần của bài bác soát sổ của bạn


— Michael Freidgeyên ổn mối cung cấp
12

Theo nội dung bài viết của Microsoft "Làm rành mạch miếng chêm" :

Đó là một phxay ẩn dụ dựa vào tự shim trong giờ Anh, đây là một thuật ngữ nghệ thuật được sử dụng nhằm biểu thị một miếng mộc hoặc sắt kẽm kim loại được cnhát vào thân nhì đồ vật thể để làm cho cái đó khớp cùng nhau tốt rộng. Trong lập trình sẵn máy vi tính, shim là một tlỗi viện nhỏ dại rất có thể ngăn API một cách trong veo, đổi khác các tmê say số được truyền, từ cách xử lý hoạt động hoặc chuyển qua làn đường khác hoạt động sống chỗ khác. Shims cũng rất có thể được sử dụng để chạy những lịch trình bên trên các căn cơ phần mềm không giống nhau mà chúng được phát triển.

Tôi giải thích điều này tức là shyên là một trong những thuật ngữ thông thường cho bất kỳ thư viện mã như thế nào vận động nhỏng một fan trung gian với biến đổi một phần hoặc hoàn toàn hành vi hoặc hoạt động vui chơi của một chương trình. Giống nlỗi một bạn trung gian thực thụ, nó có thể ảnh hưởng cho dữ liệu được truyền cho chương trình đó hoặc ảnh hưởng cho tài liệu được trả về từ công tác đó.

Bài viết thực hiện API Windows làm cho ví dụ với tôi thấy câu sau tất cả liên quan:

Ứng dụng thường chần chừ rằng từng trải đang đưa sang DLL trong thời điểm tạm thời cố gắng vày Windows với Windows do dự rằng yên cầu đến từ một mối cung cấp không giống kế bên vận dụng (do DLL shim chỉ là một DLL khác trong quy trình của ứng dụng) .

Để tổng quan hóa trích dẫn này, nhị lịch trình tạo thành "bánh mì" của "bánh sandwich shim" thiết yếu khác nhau giữa thì thầm cùng với công tác đối tác doanh nghiệp của mình và nói chuyện cùng với shim.

Một số ưu với yếu điểm của câu hỏi áp dụng miếng chêm là gì?

Một lần tiếp nữa, từ bài xích viết:

Quý Khách rất có thể sửa những vận dụng mà lại không đề nghị truy vấn vào mã mối cung cấp hoặc không biến hóa bọn chúng. Bạn bắt buộc Chịu đựng một lượng tối tgọi ngân sách thống trị bổ sung ... và bạn cũng có thể sửa một trong những lượng ứng dụng hợp lí Theo phong cách này. Nhược điểm là hỗ trợ vì chưng hầu hết những bên cung cấp ko cung cấp các áp dụng đẹp đẹp. Bạn cấp thiết sửa phần nhiều ứng dụng bởi miếng chêm. Hầu không còn phần nhiều fan thường để ý các miếng chêm cho các áp dụng nhưng mà bên cung ứng ko chuyển động, ứng dụng không đủ chiến lược nhằm thưởng thức cung cấp hoặc chúng ta chỉ muốn mua một thời hạn.

Trong ngữ cảnh của câu hỏi này, những thuật ngữ nlỗi "proxy", "bộ đưa đổi" và "mặt tiền" có ý nghĩa rộng (ít nhất là với tôi) sau khi phát âm link bên trên.

Xem thêm: " Kinky Là Gì ? Nghĩa Của Từ Kinky Trong Tiếng Việt Kinky Nghĩa Là Gì Trong Tiếng Việt


Như chúng ta cũng có thể thấy trong nhiều bình luận tại đây, shyên là một loại bộ điều phù hợp hỗ trợ chức năng sinh sống cấp cho API nhưng ko tốt nhất thiết đề xuất là một phần của API đó. Chủ đề này có không ít phản hồi xuất sắc và không hề thiếu, vì chưng vậy tôi không mở rộng tư tưởng không chỉ có thế.

Tuy nhiên, tôi cho là tôi có thể thêm một ví dụ xuất xắc, chính là Javascript ES5 Shyên ( https://github.com/es-shims/es5-shlặng ):

Javascript đang trở nên tân tiến không ít vào vài ba năm qua với trong những những thay biến hóa đối với quánh tả ngôn từ, tương đối nhiều cách thức mới đã được sản xuất các đối tượng người sử dụng chủ quản của nó.

lấy ví dụ như, trong đặc tả ES2015 (còn được gọi là ES5), thủ tục findđã có chế tạo Arrayngulặng mẫu mã. Vì vậy, mang sử bạn đang làm việc mã của bản thân bởi mức sử dụng JavasScript trước thông số chuyên môn này (ví dụ: Nút 0.12) không cung cấp cách làm kia. Bằng bí quyết sở hữu shyên ổn ES5, những cách thức mới này sẽ tiến hành chế tạo Arraynguim mẫu, được cho phép bạn áp dụng bọn chúng trong cả khi chúng ta ko điều khiển xe trên một quánh tả JavaScript mới rộng.

quý khách hàng có thể hỏi: tại vì sao ai đó sẽ có tác dụng điều ấy cố vị nâng cấp môi trường xung quanh lên phiên bạn dạng mới rộng (mang sử là Nút ít 8)?

Có rất nhiều trường hợp thực tiễn trong những số ấy biện pháp tiếp cận kia gồm ý nghĩa sâu sắc. Một ví dụ điển hình:

Giả sử bạn tất cả một hệ thống cũ đang chạy vào môi trường cũ và bạn cần áp dụng các cách thức mới điều đó để thực hiện / thay thế sửa chữa một công dụng. Việc tăng cấp môi trường của doanh nghiệp vẫn đang được tiến hành bởi vì bao hàm vấn đề tương xứng yên cầu các chuyển đổi cùng đánh giá mã (một yếu tố quan liêu trọng).

Trong ví dụ này, chúng ta có thể thử tạo nên phiên bản chức năng như vậy, tuy thế điều ấy đã khiến cho mã của công ty cạnh tranh gọi rộng, phức hợp hơn, hoàn toàn có thể giới thiệu những lỗi mới và đang kinh nghiệm mặt hàng tấn thí nghiệm bổ sung chỉ nhằm tổng quan một tác dụng mà chúng ta biết nó sẽ có được sẵn trong phiên bản tiếp theo.

Ttuyệt vào đó, chúng ta cũng có thể sử dụng shyên ổn này cùng sử dụng các phương thức mới này, lợi dụng thực tế là sửa lỗi / tác dụng này đang tương xứng sau thời điểm tăng cấp, vì chúng ta sẽ sử dụng các phương thức sẽ biết tất cả sẵn trong thông số nghệ thuật tiếp theo. Và bao gồm một nguyên nhân ngã sung: vày những cách thức này còn có bắt đầu từ sệt tả ngữ điệu tiếp theo, vô cùng hoàn toàn có thể bọn chúng vẫn chạy nhanh hao rộng bất kỳ triển khai như thế nào bạn cũng có thể thực hiện nếu như bạn nỗ lực tạo phiên bạn dạng của riêng biệt bản thân.

Một kịch bạn dạng thực tế không giống nhưng biện pháp tiếp cận điều đó được tiếp nhận là nghỉ ngơi cấp cho trình cẩn thận. Giả sử bạn phải cung ứng trình lưu ý cũ và ước ao tận dụng tối đa những tính năng lạ hơn này. Javascript là ngôn ngữ chất nhận được các bạn thêm / sửa thay đổi những cách thức trong những đối tượng người sử dụng cốt tử của chính nó (nlỗi thêm các phương thức vào nguim mẫu mã Array) với những thỏng viện shyên đó đầy đủ sáng dạ nhằm thêm các phương thức đó chỉ khi Việc tiến hành bây chừ thiếu hụt bọn chúng.

PS: 1) Quý khách hàng vẫn thấy thuật ngữ "Polyfill" liên quan mang đến những miếng chêm Javascript này. Polyfill là một trong những nhiều loại shyên chuyên sử dụng rộng được thực hiện để cung ứng kĩ năng tương thích về vùng trước trong số thông số kỹ thuật nghệ thuật cấp trình coi sóc khác biệt. Nhân tiện, ví dụ của tớ nghỉ ngơi trên nói đúng đắn đến ví dụ như vậy.

2) Shims không giới hạn trong ví dụ này (thêm tác dụng sẽ có được trong phiên bản tương lai). Có các ngôi trường đúng theo thực hiện khác nhau cũng trở nên được xem như là một shyên.

3) Nếu các bạn hiếu kỳ về cách thực thi polyfill ví dụ này, bạn có thể mngơi nghỉ thông số Javascript Array.find và cuộn mang đến dưới trang chỗ bạn sẽ tra cứu thấy triển khai chủ yếu tắc cho cách thức này.

Bài viết liên quan

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *