Bộ điều hợp mẫu thiết kế php
Trong hướng dẫn này mình sẽ giới thiệu đến các bạn một trong những Pattern thuộc nhóm Structural Patterns (Mẫu thiết kế kiến trúc) đó là Adapter Pattern Show Bài viết này đã được đăng tại freetuts. net , không được sao chép dưới mọi hình thức. Ở bài viết này mình sẽ giới thiệu sơ qua các khái niệm về Adapter Pattern và cách phát triển nó như thế nào, sau đó sẽ thực hiện chương trình đơn giản với Adapter Pattern Adapter Pattern là gì?Adapter Pattern có chức năng điều chỉnh giao diện (giao diện) này sang giao diện khác. Nó hoạt động như một cầu nối giữa hai giao diện không liên quan, tương tự như máy quét hoạt động như một cầu nối giữa giấy và máy tính Điều này giúp các lớp có giao diện khác nhau có thể giao tiếp với nhau thông qua một giao diện trung gian Bài viết này đã được đăng tại [free tuts. bọc lưới] Đơn giản chương trình với Adapter Pattern JavaTrình tạo giao diện là giao diện chung nhất, nó cung cấp một phương thức chấp nhận các loại tòa nhà và vị trí của nó Người xây dựng. java public interface Builder { public void build(String type, String location); } Giao diện AdvancedBuilder cung cấp hai phương thức đó là. xây dựngNhà chọc trời AdvancedBuilder. java public interface AdvancedBuilder { public void buildHouse(String location); public void buildSkyscrapper(String location); } Tại đây chúng ta sẽ tạo một lớp HouseBuilder để thực thi giao diện AdvancedBuilder NhàXây Dựng. java public class HouseBuilder implements AdvancedBuilder { @Override public void buildHouse(String location) { System.out.println("Xây dựng một ngôi nhà nằm trong " + location + " khu vực!"); } @Override public void buildSkyscrapper(String location) { } } Cũng tương tự như vậy, chúng ta sẽ tạo thêm một lớp nữa đó là SkyscrapperBuilder Tòa Nhà Chọc Trời. java public class SkyscrapperBuilder implements AdvancedBuilder { @Override public void buildSkyscrapper(String location) { System.out.println("Xây dựng một tòa nhà chọc trời trong " + location + " khu vực!"); } @Override public void buildHouse(String location) { } } Ở đây có một phần bộ điều hợp để kết nối hai giao diện này Bộ chuyển đổi Builder. java public class BuilderAdapter implements Builder { AdvancedBuilder advancedBuilder; public BuilderAdapter(String type) { if(type.equalsIgnoreCase("Nhà")) { advancedBuilder = new HouseBuilder(); } else if(type.equalsIgnoreCase("Tòa nhà chọc trời")) { advancedBuilder = new SkyscrapperBuilder(); } } @Override public void build(String type, String location) { if(type.equalsIgnoreCase("Nhà")) { advancedBuilder.buildHouse(location); } else if(type.equalsIgnoreCase("Tòa nhà chọc trời")) { advancedBuilder.buildSkyscrapper(location); } } } Khi Adapter hoạt động, chúng ta có thể sử dụng phương thức của các giao diện để xây dựng các loại tòa nhà BuilderThực hiện. java public class BuilderImplementation implements Builder { BuilderAdapter builderAdapter; @Override public void build(String type, String location) { if(type.equalsIgnoreCase("Nhà") || type.equalsIgnoreCase("Tòa nhà chọc trời")) { builderAdapter = new BuilderAdapter(type); builderAdapter.build(type, location); } else { System.out.println("Loại tòa nhà không hợp lệ."); } } } Cuối cùng chúng ta sẽ tạo một hàm Main để chạy chương trình Chủ yếu. java public class Main { public static void main(String[] args) { BuilderImplementation builderImpl = new BuilderImplementation(); builderImpl.build("Nhà", "trung tâm"); builderImpl.build("Tòa nhà chọc trời", "trung tâm thành phố"); builderImpl.build("Tòa nhà chọc trời", "vùng ngoại ô"); builderImpl.build("Khách sạn", "trung tâm thành phố"); System.out.println("-------------------------------------------"); System.out.println("Chương trình này được đăng tại Freetuts.net"); } } Kết quả sau khi chạy chương trình Như vậy là chúng ta đã cùng nhau tìm hiểu Adapter Pattern là gì? . Chúc các bạn thực hiện thành công Bộ điều hợp hoạt động như một trình bao bọc giữa hai đối tượng. Nó bắt các cuộc gọi cho một đối tượng và biến đổi chúng thành định dạng và giao diện mà đối tượng thứ hai có thể nhận ra Tìm hiểu thêm về Bộ điều hợp dẫn đường giới thiệu Ví dụ khái niệm mục lục đầu ra Ví dụ thế giới thực mục lục đầu ra phức tạp. Phổ biến. ví dụ sử dụng. Mẫu Adapter khá phổ biến trong mã PHP. Nó thường được sử dụng trong các hệ thống dựa trên một số mã kế thừa. Trong những trường hợp như vậy, Bộ điều hợp làm cho mã kế thừa hoạt động với các lớp hiện đại Nhận biết. Bộ điều hợp có thể được nhận dạng bởi một hàm tạo lấy một thể hiện của một loại giao diện/trừu tượng khác. Khi bộ điều hợp nhận được lệnh gọi đến bất kỳ phương thức nào của nó, nó sẽ dịch các tham số sang định dạng thích hợp và sau đó hướng lệnh gọi đến một hoặc một số phương thức của đối tượng được bao bọc. Ví dụ khái niệm Ví dụ thế giới thực Ví dụ khái niệmVí dụ này minh họa cấu trúc của mẫu thiết kế Bộ điều hợp và tập trung vào các câu hỏi sau
Sau khi tìm hiểu về cấu trúc của mẫu, bạn sẽ dễ dàng nắm bắt ví dụ sau, dựa trên trường hợp sử dụng PHP trong thế giới thực mục lục. php. ví dụ khái niệmadaptee = $adaptee; } public function request(): string { return "Adapter: (TRANSLATED) " . strrev($this->adaptee->specificRequest()); } } /** * The client code supports all classes that follow the Target interface. */ function clientCode(Target $target) { echo $target->request(); } echo "Client: I can work just fine with the Target objects:\n"; $target = new Target(); clientCode($target); echo "\n\n"; $adaptee = new Adaptee(); echo "Client: The Adaptee class has a weird interface. See, I don't understand it:\n"; echo "Adaptee: " . $adaptee->specificRequest(); echo "\n\n"; echo "Client: But I can work with it via the Adapter:\n"; $adapter = new Adapter($adaptee); clientCode($adapter); đầu ra. txt. kết quả thực hiện________số 8Ví dụ thế giới thựcMẫu Bộ điều hợp cho phép bạn sử dụng các lớp kế thừa hoặc bên thứ 3 ngay cả khi chúng không tương thích với phần lớn mã của bạn. Ví dụ: thay vì viết lại giao diện thông báo của ứng dụng để hỗ trợ từng dịch vụ của bên thứ 3 như Slack, Facebook, SMS hoặc (bạn đặt tên cho nó), bạn có thể tạo một bộ trình bao bọc đặc biệt để điều chỉnh các cuộc gọi từ ứng dụng của bạn tới |