Table of Contents
Giới thiệu
Xây dựng lại một kiến trúc bổ sung có thể mở rộng và có thể mở rộng được trong WordPress là một kỹ năng quan trọng cho các nhà phát triển muốn tạo ra giải pháp để đứng vững trước thử thời gian. Khi bổ sung tăng trưởng trong sự phức tạp, nhu cầu về cơ sở mã có thể bảo trì được trở thành tối ưu. Một mẫu thiết kế vượt trội trong bối cảnh này là mẫu phân loại. Mô hình tạo này cung cấp một cách mạnh mẽ để thu thập đối tượng tạo ra, cho phép các nhà phát triển tạo ra các gia đình của các đối tượng liên quan mà không cần thiết để thực hiện mã kết nối cụ thể. Bằng cách áp dụng các tính chất, mẫu tự cấu trúc, các nhà phát triển có thể đạt được mức độ linh hoạt cao hơn, và duy trì tính năng suất tinh vi của chúng, trong khi duy trì các yêu cầu hợp lý và thay đổi.
Gương mẫu trừu tượng là gì?
Mẫu Nhà máy Trừu học là mẫu thiết kế cổ điển của băng nhóm 4. Nó cung cấp một giao diện để tạo ra các gia đình có liên quan hoặc phụ thuộc mà không cần xác định các hạng cụ thể. Về cơ bản, bạn định nghĩa một giao diện nhà máy trừu tượng để tuyên bố phương pháp tạo ra các loại vật thể trong gia đình. Các nhà máy đặc biệt thực hiện giao diện này để tạo ra các đối tượng cụ thể mà có chung một chủ đề hoặc ngữ cảnh.
Mô hình này đặc biệt hữu ích khi hệ thống của bạn cần phải độc lập về cách các đối tượng được tạo ra, cấu tạo và đại diện. Nó cho phép bạn trao đổi toàn bộ gia đình sản phẩm bằng cách thay thế một nhà máy bê tông cho người khác mà không thay đổi mã số dùng các sản phẩm đó. Điều này làm cho hệ thống có tính năng rất đa thức và sẵn sàng hỗ trợ biến thể mới với những thay đổi tối thiểu.
Tại sao dùng kỹ thuật bổ sung phát triển từ ngữ?
Phần bổ sung từPress thường cần hỗ trợ nhiều môi trường, sắc thái, hay cấu hình. Chẳng hạn, bổ sung có thể cung cấp giao diện điều khiển khác nhau cho vai trò người dùng khác nhau, hoặc nó có thể cần tạo thành phần giao diện điều khiển thích ứng với sắc thái hoạt động. Không có phương pháp có cấu trúc, bạn kết thúc với logic điều kiện rải rác trên cơ sở mã, làm cho nó mỏng manh và khó duy trì.
Mẫu Nhà máy Trừu tượng giải quyết vấn đề này bằng cách tập trung tạo đối tượng. Thay vì viết [FLT: 0] lời tuyên bố ở khắp nơi, bạn xác định nhà máy tạo ra các đối tượng phù hợp dựa trên ngữ cảnh. Điều này dẫn đến:
- Khả năng đọc: trao đổi toàn bộ thành phần bằng cách thay đổi nhà máy, chứ không phải bằng việc sửa đổi hàng chục tập tin.
- Khả năng: Các nhà máy Mock trong đơn vị thử nghiệm để cô lập logic bạn muốn kiểm tra.
- Khả năng tính toán: Thêm các gia đình thành phần mới (v. d. cho một sắc thái mới) bằng cách tạo một nhà máy mới - không cần phải sửa đổi mã khách hàng hiện có.
- Khả năng duy trì:) Giữ cho sự sáng tạo tách biệt với logic kinh doanh, làm cho mỗi phần dễ hiểu và phục hồi.
Thi hành gương mẫu về sự phân biệt đối xử trong phần bổ sung WordPress
Giả sử chúng ta đang xây dựng một trang thiết lập và một thiết bị điều khiển, cả hai thành phần này cần thay đổi tùy theo chế độ đơn giản lẫn tiên tiến.
Bước 1: Nhận diện những người thân trong các đề tài liên quan
Trước tiên, hãy xác định loại mục bạn sẽ tạo. Trong ví dụ của chúng tôi, chúng tôi có hai loại: sắp xếp trang và ) DashboardWidget . Mỗi loại có hai biến số: đơn giản và tiến bộ.
Bước 2: Định nghĩa giao diện trừu tượng
Tạo giao diện (hay lớp trừu tượng) cho mỗi kiểu sản phẩm. Những giao diện này công bố các phương pháp mà mọi việc thực hiện cụ thể phải cung cấp.
<?php
interface SettingsPageInterface {
public function render();
public function save();
}
interface DashboardWidgetInterface {
public function display();
}
?>
Bước 3: Tạo sự chia rẽ cho mỗi gia đình
Bây giờ hãy học các lớp cụ thể cho các gia đình đơn giản và tiên tiến.
Thiết lập theo chu kỳ:)
<?php
class SimpleSettingsPage implements SettingsPageInterface {
public function render() {
echo '<div class="wrap"><h1>Simple Settings</h1><form><input type="text" name="simple_option" /></form></div>';
}
public function save() {
update_option( 'simple_option', sanitize_text_field( $_POST['simple_option'] ) );
}
}
?>
Trang thiết lập cao:)
<?php
class AdvancedSettingsPage implements SettingsPageInterface {
public function render() {
echo '<div class="wrap"><h1>Advanced Settings</h1><form>...complex fields...</form></div>';
}
public function save() {
// complex validation and saving logic
}
}
?>
Ô điều khiển bảng điều khiển đơn giản:
<?php
class SimpleDashboardWidget implements DashboardWidgetInterface {
public function display() {
echo '<p>Simple widget content.</p>';
}
}
?>
Ô điều khiển bảng điều khiển đã cao:
<?php
class AdvancedDashboardWidget implements DashboardWidgetInterface {
public function display() {
echo '<p>Advanced widget with charts and stats.</p>';
}
}
?>
Bước 4: Làm cho xong giao diện Nhà máy Trừu tượng
Xác định giao diện nhà máy trừu tượng mà tuyên bố phương pháp sáng tạo cho mỗi loại sản phẩm.
<?php
interface PluginComponentFactory {
public function createSettingsPage(): SettingsPageInterface;
public function createDashboardWidget(): DashboardWidgetInterface;
}
?>
Bước 5: Tạo các nhà phân
Mỗi nhà máy thực hiện giao diện và trả lại một gia đình thích hợp của các vật thể.
<?php
class SimpleModeFactory implements PluginComponentFactory {
public function createSettingsPage(): SettingsPageInterface {
return new SimpleSettingsPage();
}
public function createDashboardWidget(): DashboardWidgetInterface {
return new SimpleDashboardWidget();
}
}
class AdvancedModeFactory implements PluginComponentFactory {
public function createSettingsPage(): SettingsPageInterface {
return new AdvancedSettingsPage();
}
public function createDashboardWidget(): DashboardWidgetInterface {
return new AdvancedDashboardWidget();
}
}
?>
Bước 6: Dùng nhà máy trong phần bổ sung
Quyết định nhà máy nào dùng dựa trên cấu hình hay ngữ cảnh (v. d., người dùng thiết lập hay hằng số) và rồi gọi phương pháp của nó để tạo thành phần.
<?php
function get_plugin_factory(): PluginComponentFactory {
$mode = get_option( 'plugin_mode', 'simple' );
if ( $mode === 'advanced' ) {
return new AdvancedModeFactory();
}
return new SimpleModeFactory();
}
$factory = get_plugin_factory();
$settings_page = $factory->createSettingsPage();
$widget = $factory->createDashboardWidget();
// Later, use these objects:
$settings_page->render();
add_action( 'wp_dashboard_setup', function() use ( $widget ) {
wp_add_dashboard_widget( 'my_custom_widget', 'My Widget', [ $widget, 'display' ] );
} );
?>
Chuyển đổi giữa chế độ đơn giản và nâng cao thì cũng dễ dàng như thay đổi nhà máy vậy. nếu chế độ thứ ba xuất hiện, bạn sẽ tạo ra một nhà máy bê tông mới và các lớp sản phẩm tương ứng của nó mà không cần chạm vào bất cứ mã khách hàng nào sử dụng nhà máy.
Ví dụ thực tế: Một phần bổ sung đa thẻ
Hãy xem xét một hình thức liên lạc. Bố trí, hợp lệ và email của hình thức có thể khác nhau tùy thuộc vào việc trang web có sử dụng chủ đề cổ điển hay chủ đề dựa trên khối. Dùng giao diện tỉ mỉ [FLT: 0], bạn có thể định nghĩa [FLT: 0] [FLT:] [FLT: 1] và [FLT: 1] Phần bổ sung lý thuyết trừu tượng, [FLT: 2] và [FLT] chỉ phụ thuộc vào chủ đề trong tương lai.
Đây là một bản phác thảo mã đơn giản:
<?php
interface FormRenderer {
public function render(): string;
}
interface EmailSender {
public function send( array $data ): bool;
}
interface ContactFormFactory {
public function createRenderer(): FormRenderer;
public function createEmailSender(): EmailSender;
}
// Classic theme implementations
class ClassicFormRenderer implements FormRenderer { /* ... */ }
class ClassicEmailSender implements EmailSender { /* ... */ }
class ClassicThemeFactory implements ContactFormFactory { /* ... */ }
// Block theme implementations
class BlockFormRenderer implements FormRenderer { /* ... */ }
class BlockEmailSender implements EmailSender { /* ... */ }
class BlockThemeFactory implements ContactFormFactory { /* ... */ }
// Usage
$factory = new ClassicThemeFactory(); // or switch based on theme support
$renderer = $factory->createRenderer();
$sender = $factory->createEmailSender();
?>
Cách tiếp cận này giữ cho logic chính của bổ sung không thay đổi, ngay cả khi các chủ đề mới được giới thiệu. Nó cũng làm cho việc thử nghiệm đơn vị đơn giản: bạn có thể tạo ra một nhà máy chế biến mà sẽ thử nghiệm lại.
Lợi ích và lợi nhuận thương mại
Mẫu Nhà máy Trừu tượng cung cấp một số ưu điểm khác nhau cho việc phát triển bổ sung WordPress:
- Ứng dụng khách ) Ứng dụng khách bổ sung chỉ phụ thuộc vào giao diện trừu tượng, chứ không phải hạng bê tông. Tính năng này giảm hiệu ứng gợn sóng khi thực hiện thay đổi.
- Sự tương thích:) Mô hình bảo đảm rằng các vật thể được tạo ra bởi một nhà máy riêng lẻ thuộc về cùng một gia đình, ngăn chặn sự kết hợp không khớp.
- [FLT: 0] Giá trị mở rộng:) Thêm một gia đình mới (v. d., hỗ trợ cho một nhà xây dựng trang mới) chỉ cần thiết thiết thực hiện giao diện và tạo ra một nhà máy mới.
Tuy nhiên, nó cũng đưa đến một số sự phức tạp:
- Đầu trang phụ:) Giao diện dự phòng và nhiều nhà máy tăng số hạng. Đối với bổ sung rất nhỏ, điều này có thể là quá mức giết.
- Đường cong cong Learning: những nhà phát triển không quen thuộc với kiểu thiết kế có thể thấy khó theo.
- Sự thích nghi trong việc sáng tạo đối tượng: ) Nếu bạn cần tạo những vật không phù hợp với gia đình, thì mẫu hình có thể cảm thấy bị ép buộc.
Để quyết định có nên dùng Máy gia tăng trừu tượng, hãy đánh giá khả năng cần nhiều gia đình vật thể trao đổi nhau, nếu cần, thì cách tính này sẽ nhanh chóng giảm chi phí bảo trì lâu dài.
Kết luận
Mẫu ngữ nghĩa đen là một công cụ mạnh mẽ để thiết kế lại kiến trúc bổ sung có thể sử dụng trong WordPres. Bằng cách tách [FLT: 0] [FLT: 1] ra ) ) cách của sự tạo vật, bạn làm cho chức năng của bạn linh hoạt, có thể kiểm tra và duy trì được. Dù bạn đang xây dựng một bổ sung khác nhau để hỗ trợ chủ đề, vai trò người dùng, hoặc chế độ, mẫu này giúp bạn xác định sự biến đổi và giữ cho lõi của bạn. Bắt đầu làm sạch các đối tượng gia đình có thể thay đổi, và có thể áp dụng một cách lập một cách lập trình tự lập, cũng có thể xem và cũng có thể thay đổi các mẫu, cũng có thể thay đổi cách sắp xếp theo sau này.
Để đọc thêm, hãy tìm hiểu giải thích của Giáo sư về cách giải thích của mình [FLT: 1] ). ).