[英]Design Pattern with Javascript and PHP
我正在用PHP創建一個網站,該網站也包含Javascript元素。 這將具有類似於插件系統的功能,在該系統中可以將插件動態添加到網站。
我已經創建了插件系統,但是我不喜歡設計的某些元素。 特別是,我正在使用MVC模式,但是javascript抽象存在問題。
我有一個可以加載所有插件的文件。 然后,有一個javascript文件,根據所進行的選擇,動態地將框添加到窗口中,以了解應使用哪種插件。
在js文件中如下所示:
if (SelValue == 'image_list')
image_list(form_name, new_div, parent_div);
if (SelValue == 'multiple_columns')
multiple_columns(form_name, new_div, parent_div);
然后,就在下面,緊跟着imagelist()的聲明,依此類推。 當然,這很麻煩,當然看起來也不是一個好習慣。 我想對所有這些進行抽象和隔離,因此,如果可能的話,插件只是添加到我的代碼中的一個簡單步驟。
您是否知道適合這種情況的任何設計模式或實踐?
您可以創建一個對象容納像所有功能image_list
和multiple_columns
。 使用它們看起來像:
plugins[SelValue](form_name, new_div, parent_div);
添加新功能如下所示:
plugins.image_list = function (form_name, new_div, parent_div) {
/* … */
}
此定義可以放在其他文件中。 這是你的意思嗎?
編輯:漂亮的單文件版本:
plugins = {
image_list: function (form_name, new_div, parent_div) {
/* … */
},
multiple_columns: function (form_name, new_div, parent_div) {
/* … */
},
};
plugins[SelValue](form_name, new_div, parent_div);
如果您的IF語句不超過2個,那就足夠了。 但是,如果您要擴展它(或可以預見它會擴展),那么我建議使用Factory / Command設計模式。 實現細節將包括一張表或一個詞典,以替換您將擁有的多個IF語句。
模塊模式可能非常適合您的需求。 這種模式基本上會將每個“插件”視為一個模塊,其本身應具有完整的功能且獨立。 然后,您將擁有一個模塊加載器/控制器,該模塊負責加載正確的模塊,並使模塊彼此通信。
http://www.adequatelygood.com/2010/3/JavaScript-Module-Pattern-In-Depth
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.