Bridge Pattern (không chỉ vào PHP) kiến tạo với ý tưởng tách rời các hàm xử lý của 1 lớp ra lớp khác. Từ đó sẽ dễ ợt chỉnh sửa, cập nhật mà không làm tác động đến mọi nơi áp dụng class ban đầu. Ở 1 tinh tướng nào kia thì Bridge Pattern khá giống như với Adapter Pattern nhưng edingsport.net đã giới thiệu trước đó.

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

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

Bridge Pattern là gì?

Bridge Pattern là một trong những mẫu xây cất thuộc nhóm cấu tạo (Structural Pattern).

Mẫu Bridge tiến hành với ý tưởng bóc tách tính trừu tượng (abstraction) thoát ra khỏi phần lúc này (implementation) của nó. Từ đó có thể dễ dàng sửa đổi hoặc upgrade mà không làm tác động đến mọi nơi có áp dụng lớp ban đầu.

Hiểu 1 cách đơn giản hơn, họ có 1 class lúc đầu với rất nhiều hàm tính năng để cách xử lý nghiệp vụ. Tuy nhiên sau một thời gian,chúng ta mong tối ưu lại class này. Bọn họ không hy vọng để phần lớn hàm xử trí đó trong class nữa.

Điều này dẫn mang lại việc tạo ra 1 class khác và chuyển những hàm cách xử lý từ class cũ thanh lịch class mới. Khi ấy trong class cũ sẽ lưu lại 1 đối tượng người dùng (của class mới) – hay còn gọi là composition. Đối tượng được tàng trữ này sẽ phụ trách xử lý thế cho class cũ ban đầu.

Bridge Pattern cùng Adapter Pattern giống cùng khác nhau?

2 mẫu xây dựng này gồm điểm giống nhau ở vị trí sẽ nhờ vào 1 class khác để triển khai 1 số chức năng xử lý như thế nào đó. Tuy nhiên, ý nghĩa sâu sắc với mục đích cử dụng của 2 mẫu này khác nhau hoàn toàn.

+ Đối cùng với Adapter Pattern được dùng để biến hóa 1 lớp sang 1 dạng khác rất có thể sử dụng được. Trải qua Adapter, các lớp thông thường không tương thích với nhau thì hoàn toàn có thể làm việc được với nhau.

+ Đối với Bridge Pattern chính vậy tách bé dại class lúc này ra các class khác. Việc này hỗ trợ cho việc nâng cấp, gắng dổi các hàm vào class mới tách bóc ra ko làm ảnh hưởng class ban đầu.

+ Adapter Pattern hay được áp dụng vào khối hệ thống có sẵn để mở rộng, hoặc giúp cho những phần cũ trong khối hệ thống tương mê thích với một phần mới như thế nào đó

+ Bridge Pattern có thiết kế trước khi cải tiến và phát triển hệ thống, để tách biệt phần implementation cùng phần abstraction.

Cài đặt Bridge Pattern trong PHP như thế nào?


*

Một Bridge Pattern có các thành phần sau

Client: Đại diện cho khách hàng sử dụng các công dụng (hàm xử lý) thông qua Abstraction.

(Client này có thể là các hàm xử lý nhiệm vụ của hệ thống lớn hay là thành phần xử trí nghiệp vụ liên quan tới Abstraction)

Abstraction: định ra một abstract interface (Abstract class) thống trị việc tham chiếu đến đối tượng người tiêu dùng hiện thực rõ ràng (Implementation).

Implementation: định ra những interface cho các lớp hiện thực. Thông thường nó là interface định ra các tác vụ nào đó của Abstraction.

ConcreteImplementations: thực tại (thể hiện của Implementation)

Ví dụ về Bridge Adapter trong PHP

Để gọi thêm về Bridge Adapter chúng ta tìm hiểu ví như sau

Như đang biết 1 file ảnh có thể có rất nhiều định dạng file khác biệt như JPG, PNG, BMP, TIFF, GIF, SVG…

Hiện trên trên thị trường chúng ta cũng có tương đối nhiều phiên bạn dạng hệ điều hành khác biệt như Window, MacOs, Linux…

Thì so với mỗi tệp tin ảnh( đuôi khác nhau) sẽ có được cách đọc cùng hiển thị trên mỗi quản lý khác nhau. Ví dụ hơn, những đọc tệp tin jpg cùng png trên window vẫn khác nhau, đôi khi cũng khác biện pháp đọc tệp tin jpg và png trên MacOs

Ta có lược trang bị cơ bạn dạng về điều đó ( khi xây dựng những lớp diễn tả cho vấn đề đọc file hình ảnh)


*

Chúng ta đã có

1 Abstract class Operator ( Hệ điều hành) trong này sẽ có được các phương thức bắt buộc ghi đèn như hiểu file PNG, đọc file JPG

2 lớp miêu tả của Operator là Window với MacOs

Với từng hệ điều hành quản lý này, chúng ta có 2 class khớp ứng với câu hỏi đọc file JPG, hay tệp tin PNG

Đoạn mã code biểu hiện cho đoạn này như sau

preview(); } public function previewPng(Png $png):void echo "Window - "; $png->preview(); }class Macos extends Operator public function previewJpg(Jpg $jpg):void echo "Macos - "; $jpg->preview(); public function previewPng(Png $png):void echo "Macos - "; $png->preview(); $macos = new Macos;$macos->previewJpg(new Jpg);$macos->previewPng(new Png);Khi thực hiện code như này sẽ có hạn chế như sau

Hãy tưởng tượng

Với 2 hệ điều hành này, số lượng định dạng hình ảnh cần xây cất là 3. Thứu tự là JPG Preview, PNG Preview, BMP Preview.

Thì tổng cộng class cần tạo thành (cho phần coi ảnh) là: 6 class

với 4 định dạng đến 2 hệ điều hành quản lý sẽ là 8 class.

Số lượng class cấp cho số nhân theo số lượng định dạng và con số hệ điều hành quản lý hiện có.

Từ lấy ví dụ này ta sẽ áp dụng Bridge Pattern vào, ta tất cả lược đồ


*

Đoạn mã code khớp ứng như sau

extension = $extension; } public abstract function preview():void;}class Window extends Operator public function preview():void // Xử lý nhiệm vụ đọc tệp tin trên window echo "Window - "; $this->extension->preview(); class MacOs extends Operator public function preview():void // Xử lý nhiệm vụ đọc file trên MacOs echo "MacOs - "; $this->extension->preview(); $jpg= new Jpg;$png= new Png;$window = new Window($jpg);$window->preview(); //Window - Xem file JPG$window = new Window($png);$window->preview(); //Window - Xem tệp tin PNGNhư đoạn mã trên họ sẽ thấy

Khi thêm 1 hệ điều hành, 1 format file hình ảnh mới thì 1 class bắt đầu lại phải khởi tạo ra. Số lượng class tạo ra sẽ không xẩy ra cấp số nhân giống hệt như phiên bản code cũ.

Lợi ích khi sử dụng Bridge Pattern là gì?

+ sút sự phụ thuộc vào giữa những phần abstraction cùng implementation. Điều này đến phép họ lựa lựa chọn implementation tương xứng lúc runtime.

+ Giảm con số những class bé không đề nghị thiết, rõ ràng trong ví dụ mặt trên.

+ Code sạch sẽ gọn gàng, form size ứng dụng bé dại nhắn hơn

+ dễ ợt nâng cấp không ngừng mở rộng và duy trì về sau .

+ tách bóc biệt thân phần abstraction với implementation giúp dễ dãi nâng cấp cho mà không bị tác động phần còn lại.

Khi nào nên thực hiện Bridge Pattern?

+ Khi bạn có nhu cầu tách biệt sự rằng buộc giữa abstraction với implementation. Điều này như sẽ nói giúp hệ thống mở rộng lớn một phương pháp độc lập.

Xem thêm: Dhcp Server Là Gì? Cấu Hình Dhcp Server Trên Windows Server 2016

+ áp dụng ở những nơi mà lại những biến hóa được thực hiện trong implement không ảnh hưởng đến phía client.

Bài viết đã khái quát cơ phiên bản về Bridge Pattern trong PHP. Thông qua bài viết hi vọng phần làm sao giúp chúng ta hiểu rõ rộng về kiến thiết Pattern cũng tương tự ứng dụng chúng vào trong các dự án của mình. Các bạn có thể bài viết liên quan về Adapter Pattern vào PHP