Adapter Pattern Là Gì

     
tubepphuonghai.com chia sẻ mọi lắp thêm về trò chơi / phần mềm / Thủ Thuật dành riêng cho máy tính với đều tin hay độc nhất và đông đảo thông tin kiến thức và kỹ năng hỏi đáp.

Trong bài xích tubepphuonghai.comết trước, họ đã cùng nhau mày mò về Object Pool Pattern. Trong bài xích tubepphuonghai.comết này, chúng ta hãy cùng nhau tìm hiểu về kiến thiết pattern đầu tiên thuộc nhóm cấu trúc (structural patterns) có tên “Adapter Pattern” nhé!

1.Adapter Pattern là gì vậy nhỉ? 4.Cấu trúc và phân nhiều loại Adapter Pattern 4.2.Phân một số loại Adapter Pattern 5.Ví dụ minh họa về Adapter Pattern 6.Ưu với nhược điểm của Adapter Pattern


Adapter Pattern là gì cầm cố nhỉ?Cấu trúc và phân một số loại Adapter PatternVí dụ minh họa về Adapter PatternƯu và nhược điểm của Adapter Pattern

Adapter Pattern là gì cụ nhỉ?

Adapter pattern là 1 trong những loại kiến thiết pattern trực thuộc nhóm kết cấu (structural patterns). Không phải một cách bất chợt mà loại design pattern này lại mang tên là Adapter Pattern. Trong giờ đồng hồ Anh, từ bỏ adapt tức là “thích nghi với, làm cho hợp với, sửa mang lại hợp với”. Với từ khóa này sẽ không biết nhiều bạn đã tư duy được chức năng của các loại design pattern này không nhỉ?

Về phiên bản chất, Adapter pattern là nhiều loại design pattern sử dụng một nhân tố trung gian được hotline là Adapter, đối tượng này có trọng trách chuyển đổi xuất phát điểm từ 1 giao diện (interface) bao gồm sẵn thành một đồ họa khác đảm bảo thích hợp với lớp đang tubepphuonghai.comết.

Bạn đang xem: Adapter pattern là gì

Đang xem: Adapter pattern là gì

Ứng dụng của Adapter Pattern vào thực tế

Trong thực tế cuộc sống có thể bọn họ đã và đang dễ dàng dàng phát hiện được phần đông ví dụ có tương quan đến loại design pattern này mà không hề hay biết, ví dụ:

Chiếc smartphone của người sử dụng đang sử dụng nguồn năng lượng điện sạc là 3V trong lúc nguồn năng lượng điện lưới lại là 220V. Sẽ ra sao nếu họ truyền thẳng điện áp nguồn 220V vào mang đến nó. Chắc chúng ta cũng dễ ợt đoán được tác dụng rồi. Chính vì sự chênh lệch này nên họ sẽ áp dụng một nguyên tố adapter trung gian mà ở đây chính là chiếc sạc smartphone của các bạn, adapter này có nhiệm vụ gửi từ nguồn điện 220V kia về nguồn điện áp 3V để có thể sạc vào cho chiếc smartphone kia một cách an toàn.

*

Bạn mới mua một loại màn hình máy tính xách tay mới và phích cắm của màn hình này tất cả 3 chân trong lúc ổ điện ở trong nhà bạn chỉ tất cả mỗi 2 lỗ. Làm cố gắng nào để rất có thể cắm được loại phích cơ vào đây? Đơn giản, bạn chỉ cần sử dụng một yếu tắc adapter trung gian nhưng ở đây chính là bộ chuyển từ 3 chân sang trọng 2 chân, cắm hoàn thành đâu vào đây là chiếc màn hình kia sẽ vào điện cùng hiển thị ngay lập tức, tuyệt vời và hoàn hảo nhất ông khía cạnh trời.

*

Tại sao cần sử dụng Adapter Pattern vậy nhỉ?

Trong thừa trình cải tiến và phát triển phần mềm, tubepphuonghai.comệc sử dụng những API (Application Programming Interface) cũng tương tự các thương mại dịch vụ (sertubepphuonghai.comces) từ bên thứ ba là cần yếu tránh khỏi. tubepphuonghai.comệc những API cũng giống như các dịch vụ thương mại này được phía bên cung cấp update phiên bạn dạng thường xuyên cũng là điều dễ gặp mặt và dễ hiểu.

Đối cùng với các chuyển đổi nhỏ, năng lực tên của những hàm của API hoặc dịch vụ thương mại bị chuyển đổi có thể không cao. Tuy nhiên, sẽ thế nào nếu một ngày đẹp mắt trời nào kia API hoặc dịch vụ có một thay đổi lớn (breaking change) và phần lớn tất cả những tên hàm ngơi nghỉ phiên bản cũ mà nhiều người đang sử dụng gần như bị biến đổi và chúng ta đã vô tình gọi hầu như tên hàm cũ này ở hàng chục ngàn tập tin khác biệt trong dự án công trình của mình. Các bạn chẹp môi, trường hợp vậy thì ráng đầu tư vài tuần hoặc vài tháng chỉnh lại tên cho khớp ứng là được rồi.

Nói rồi chúng ta thử thay đổi lại code, trong quá trình sửa đổi code bạn vô tình nhận thấy không đề nghị chỉ đơn thuần sửa đổi lại tên của những hàm là xong mà súc tích của code cũ cũng đã bị ảnh hưởng và tạo cho chương trình chạy lỗi. Trong những lúc dầu sôi lửa bỏng, vài tuần sau phía nhà cung cấp lại ra thông báo cập nhật phiên phiên bản tiếp theo mang lại API với tên toàn bộ các hàm lại bị vắt đổi. Chúng ta thẫn thờ cùng bế tắc, bạn xúc cảm như cuộc sống sửa code dạo của mình bên cạnh đó đang trở nên tối tăm hơn lúc nào hết.

Đó đó là lý bởi vì mà Adapter Pattern đã thành lập và hoạt động để giải cứu nhân loại và cứu rỗi cuộc đời của lập trình sẵn tubepphuonghai.comên chúng ta.

Khi nào nên thực hiện Adapter Pattern vậy nhỉ?

Dưới đấy là một số trường hợp bạn có thể cân nhắc sử dụng Adapter Pattern để giải quyết vấn đề:

Sử dụng Adapter Pattern khi bạn muốn sử dụng một lớp đang tồn tại trước đó tuy nhiên interface của này lại không phù hợp với nhu yếu sử dụng của bạn.Sử dụng Adapter Pattern khi bạn muốn code của mình không bị tác động từ các chuyển đổi hoặc các lần update phiên bạn dạng mới trường đoản cú API hoặc dịch vụ từ bên thứ ba (thay thay tên hàm, thương hiệu lớp,…)Sử dụng Adapter Pattern khi bạn có nhu cầu tạo ra một thành phần trung gian vừa đảm bảo kết nối với phối phù hợp với API hoặc thương mại & dịch vụ từ bên thứ ba, vừa cung cấp các hàm ứng dụng đáp ứng phù hợp với yêu cầu sử dụng của mình.

Cấu trúc và phân loại Adapter Pattern

Cấu trúc của Adapter Pattern

Adapter Pattern bao hàm bốn nhân tố cơ phiên bản là: Adaptee, Adapter, Target với Client.

Trong đó:

Adaptee: Định nghĩa interface ko tương thích, cần được tích hòa hợp vào.Adapter: Lớp tích hợp, góp interface không cân xứng tích phù hợp được với interface đang làm cho tubepphuonghai.comệc. Triển khai tubepphuonghai.comệc đổi khác interface đến Adaptee và kết nối Adaptee với Client.Target: Một interface chứa những phương thức mà lại Client yêu cầu sử dụng.

Xem thêm: Nghĩa Của Từ Distilled Water Là Gì, Nghĩa Của Từ Distilled Water

Client: Đây là lớp sẽ thực hiện các đối tượng implements từ interface Target.

Phân một số loại Adapter Pattern

Trong hướng đối tượng người sử dụng có nhì khái niệm quan trọng luôn tuy vậy hành thuộc nhau, đó là:

Composition: Cấu thành, nghĩa là 1 lớp B nào này sẽ trở thành một nhân tố của lớp A (một thuộc tính của lớp A). Tuy nhiên lớp A không thừa kế lại đồ họa của lớp B nhưng mà nó giành được mọi kĩ năng mà lớp B có.Inheritance: Kế thừa, nghĩa là 1 trong lớp con sẽ kế thừa từ lớp phụ vương và thừa hưởng tất cả những gì lớp cha của nó có. Thừa kế giúp tăng khả năng tái áp dụng code, tăng khả năng bảo trì và nâng cấp chương trình về sau. Mặc dù tubepphuonghai.comệc quá sử dụng kế thừa cũng trở thành khiến đến chương trình của bọn họ phức tạp một giải pháp không nên thiết. Vì chưng vậy những lập trình tubepphuonghai.comên thường có xu thế sử dụng composition hơn.

Ứng cùng với hai tư tưởng trên, ta gồm hai cách để cài để lớp Adapter là Object Adapter cùng Class Adapter. Trong đó:

Object Adapter:

Trong mô hình này, một lớp new (Adapter) đang tham chiếu cho một (hoặc nhiều) đối tượng người dùng của lớp tất cả sẵn cùng với interface không tương hợp (Adaptee), đồng thời thiết lập interface mà người tiêu dùng mong mong mỏi (Target). Vào lớp mới này, khi thiết lập các thủ tục của interface người tiêu dùng mong muốn, sẽ điện thoại tư vấn phương thức cần thiết thông qua đối tượng người tiêu dùng thuộc lớp bao gồm interface ko tương thích.

*

Class Adapter:

Trong quy mô này, một lớp mới (Adapter) sẽ kế thừa lớp có sẵn với interface không tương xứng (Adaptee), đồng thời thiết lập interface mà người tiêu dùng mong ước ao (Target). Trong lớp mới, khi thiết lập các cách tiến hành của interface người tiêu dùng mong muốn, cách thức này vẫn gọi những phương thức cần thiết mà nó vượt kế được từ lớp có interface không tương thích.

*

Tại sao Object Adapter lại giỏi hơn?

Object Adapter sử dụng composition để giữ lại một biểu hiện của Adaptee. tubepphuonghai.comệc thực hiện composition để giữ một thể hiện của Adaptee cho phép một Adapter chuyển động với nhiều Adaptee nếu cần thiết.

Trong khuôn khổ bài tubepphuonghai.comết này, mình cũng trở nên sử dụng Object Adapter nhằm minh họa về cách cài đặt của Adapter Pattern nhé.

Ví dụ minh họa về Adapter Pattern

Giả sử hiện tại bạn được yêu thương cầu cải cách và phát triển một ứng dụng được cho phép trả về vận tốc tối đa của các loại xe tương đối trên toàn trái đất được đo bằng đơn vị chức năng ki-lô-mét trên giờ đồng hồ (kph). Hiện đã có sẵn một thương mại dịch vụ từ bên thứ ba chất nhận được trả về tốc độ tối nhiều của tất cả các loại xe hơi trên toàn cố gắng giới, mặc dù đơn vị chuẩn chỉnh được dịch vụ thương mại này áp dụng lại là dặm trên tiếng (mph). Ý tưởng để giải quyết và xử lý vấn đề này là tạo ra một yếu tắc trung gian được cho phép chuyển từ đơn vị km/h sang đơn vị chức năng mph. Bọn họ vừa được reviews về Adapter Pattern rồi, cùng thử áp dụng Adapter Pattern coi có xử lý được bài xích toán này sẽ không nhé!

Bước 1: tạo ra interface MovableAdaptee

Interface này tương xứng với yếu tắc Adaptee trong kết cấu của Adapter Pattern. Nó chứa cách làm getSpeed() chất nhận được trả về tốc độ tối đa của các loại xe hơi được đo bằng đơn vị chức năng dặm trên tiếng (mph).

Bước 2: tạo thành một concrete implementation tự interface này mang tên RollsRoyce

Bước 3: Tiến hành tạo thành interface MovableTarget

Interface này tương xứng với yếu tố Target trong cấu trúc của Adapter Pattern. Nó chứa phương thức getSpeed() có thể chấp nhận được trả về tốc độ tối đa của những loại xe khá được đo bằng đơn vị ki-lô-mét trên giờ (kph) – đồ vật mà họ đang ý muốn muốn.

Bước 4: tạo ra class MovableAdapter implements trường đoản cú interface MovableTarget

Đây nói theo cách khác là class đặc biệt nhất giúp kết nối giữa Adaptee và Client. Nội dung setup của nó như sau:

adaptee = $adaptee; } public function getSpeed() return convertMPHToKPH($adaptee->getSpeed()); public function convertMPHToKPH($mph) return $mph * 1.60934; }?>Vậy là vượt trình thiết lập đã xong, cùng kiểm tra xem chúng ta thu được hiệu quả cuối cùng ra sao nhé:

getSpeed();?>Kết quả sau cuối thu được:

The maximum speed of Rolls-Royce in kph: 249.4477Như vậy là họ đã áp dụng thành công Adapter Pattern để xử lý vấn đề đưa ra rồi đấy. Khá mau lẹ và giỏi vời đúng không nào nào.

Xem thêm: Đơn Vị Đo Lường Tốc Độ Dòng Chảy Gpm Và Lpm Là Gì ? Đơn Vị Đo Lường Tốc Độ Dòng Chảy Gpm Và Lpm Là Gì

Ưu với nhược điểm của Adapter Pattern

Ưu điểm

Adapter Pattern được cho phép nhiều đối tượng người tiêu dùng có giao diện tiếp xúc khác nhau hoàn toàn có thể tương tác và tiếp xúc với nhau.Adapter Pattern giúp code của bọn họ không bị tác động từ các chuyển đổi hoặc những lần update phiên phiên bản mới từ bỏ API hoặc dịch vụ thương mại từ mặt thứ bố (thay đổi tên hàm, tên lớp,…)

Nhược điểm

Trong thừa trình thiết đặt Adapter Pattern có thể dẫn cho trường thích hợp tồn trên một chuỗi những Adapter dẫn mang đến tubepphuonghai.comệc tăng thêm thêm một ít bỏ ra phí.tubepphuonghai.comệc áp dụng Adapter Pattern rất có thể khiến mang lại code của công tác trở nên nhiều hơn thế nữa và phức tạp hơn. Tại sao là do yên cầu phải áp dụng nhiều lớp mới có thể thiết lập được một số loại design pattern này.

Kết luận

Như vậy trong bài tubepphuonghai.comết này, chúng ta đã cùng nhau mày mò về nhiều loại design pattern thứ nhất thuộc nhóm cấu trúc mang thương hiệu Adapter Pattern. Mong muốn loại thiết kế pattern này sẽ giúp đỡ ích cho chúng ta trong tương lai. Trong bài tubepphuonghai.comết tiếp theo sau của series, mình đang tiếp tục giới thiệu cho chúng ta một kiến thiết pattern tiếp theo thuộc nhóm cấu tạo mang thương hiệu “Bridge Pattern”. Các bạn nhớ đón coi nhé!