Singleton封裝增刪改查
這次帶給大家Singleton封裝增刪改查,Singleton封裝增刪改查的注意事項有哪些,下面就是實戰案例,一起來看一下。
本文實例講述了JS基於設計模式中的單例模式(Singleton)實現封裝對資料增刪改查功能。分享給大家供大家參考,具體如下:
單例模式
單例模式的核心結構中只包含一個稱為單例的特殊類。透過單例模式可以保證系統中一個類別只有一個實例
單例模式最初的定義出現於《設計模式》(艾迪生維斯理, 1994):「保證一個類別只有一個實例,並提供一個存取它的全域存取點。
”var Singleton = (function(){ SingletonClass() { } var singleton = null; return { getInstance: function() { if (singleton == null) { singleton = new singletonClass(); } else { return singleton; } } } })(); Singleton.getIntance();
##增加功能 $(".add").click(function(){
$.ajax({
type: "post"
dataType:"json",
url: "http://www.jb51.net/",
data: {name:"csdn博客",dir:"web前端"},
success: function( result ){
if ( result.status ) { alert("新增成功!") } else { alert("新增失败") }
},
error: function(){
alert("新增出现异步,请得新增加或联系技术管理员");
}
});
});
$(".del").click(function(){
$.ajax({
type: "post"
dataType:"json",
url: "http://www.jb51.net/",
data: {id:"1"},
success: function( result ){
if ( result.status ) { alert("删除成功!") } else { alert("删除失败") }
},
error: function(){
alert("新增出现异步,请得新增加或联系技术管理员");
}
});
});
我們改進一下
var SingletonCRUD = (function(){ SingletonClass() {} SingletonClass.prototype = { constructor: SingletonClass, add: function( data ) { $.ajax({ type: "post" dataType:"json", url: "http://www.jb51.net/", data: data, success: function( result ){ if ( result.status ) { alert("新增成功!") } else { alert("新增失败") } }, error: function(){ alert("新增出现异步,请得新增加或联系技术管理员"); } }); }, remove: function( data ) { $.ajax({ type: "post" dataType:"json", url: "http://www.jb51.net/", data: data, success: function( result ){ if ( result.status ) { alert("删除成功!") } else { alert("删除失败") } }, error: function(){ alert("新增出现异步,请得新增加或联系技术管理员"); } }); } } var singleton = null; return { getInstance: function() { if (singleton == null) { singleton = new singletonClass(); } else { return singleton; } } } })(); var curd = SingletonCRUD.getIntance(); $(".add").click(function(){ var data = {"name":"name"}; curd.add( data ); }); $(".del").click(function(){ var data = {"id": 1}; curd.remove( data ); });
常用Singleton實例來做一些Tool工具類別;
使用設計模式優點:解耦合、可讀性強、程式碼結構清晰;
透過上面的小例子,把點擊事件裡的獲取資料(click的事件函數)和操作資料(ajax請求)相分離;
透過對單例模式的最佳化後的程式碼:
var SingletonCRUD = (function(){ SingletonClass() {} SingletonClass.prototype = { constructor: SingletonClass, ajax: function(url, data success ){ $.ajax({ type: "post" dataType:"json", url: url, data: data, success: success, error: function(){ alert("新增出现异步,请得新增加或联系技术管理员"); } }); }, add: function( data ) { this.ajax("http://www.jb51.net/", data, function( result ){ if ( result.status ) { alert("新增成功!") } else { alert("新增失败") } }); }, remove: function( data ) { this.ajax("http://www.jb51.net/", data, function( result ){ if ( result.status ) { alert("删除成功!") } else { alert("删除失败") } }); } } var singleton = null; return { getInstance: function() { if (singleton == null) { singleton = new singletonClass(); } else { return singleton; } } } })();
SingleClass中的ajax方法,也相當於一個門面模式(Facade),隱藏內部細節,對外暴露一個介面;
相信看了本文案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章!
推薦閱讀:
js的作用域與預解析使用詳解以上是Singleton封裝增刪改查的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

本站4月17日消息,集邦諮詢(TrendForce)近日發布報告,認為英偉達Blackwell新平台產品需求看漲,預估帶動台積電2024年CoWoS封裝總產能提升逾150%。英偉達Blackwell新平台產品包含B系列的GPU,以及整合英偉達自家GraceArmCPU的GB200加速卡等。集邦諮詢確認為供應鏈目前非常看好GB200,預估2025年出貨量預計超過百萬片,在英偉達高階GPU中的佔比達到40-50%。在英偉達計畫下半年交付GB200以及B100等產品,但上游晶圓封裝方面須進一步採用更複

本站7月9日訊息,AMDZen5架構「Strix」系列處理器會有兩種封裝方案,其中較小的StrixPoint將採用FP8封裝,而StrixHalo將會採用FP11封裝。圖源:videocardz訊息源@Olrak29_最新曝料稱StrixHalo的FP11封裝尺寸為37.5mm*45mm(1687平方毫米),和英特爾AlderLake、RaptorLakeCPU的LGA-1700封裝尺寸相同。 AMD最新的PhoenixAPU採用FP8封裝方案,尺寸為25*40mm,這意味著StrixHalo的F

透過封裝程式碼,C++函數可以提高GUI開發效率:程式碼封裝:函數將程式碼分組到獨立單元,使程式碼易於理解和維護。可重複使用性:函數可建立通用功能供應用程式中重複使用,減少重複編寫和錯誤。簡潔程式碼:封裝程式碼讓主邏輯簡潔,方便閱讀和除錯。

PHP中的封裝技術及應用封裝是物件導向程式設計中的重要概念,它指的是將資料和資料的操作封裝在一起,以便提供對外部程式的統一存取介面。在PHP中,封裝可以透過存取控制修飾符和類別的定義來實現。本文將介紹PHP中的封裝技術及其應用場景,並提供一些具體的程式碼範例。一、封裝的存取控制修飾符在PHP中,封裝主要透過存取控制修飾符來實現。 PHP提供了三個存取控制修飾符,

Vue中Axios封裝及其常用方法介紹Axios是一款基於Promise實現的HTTP庫,它的優點在於具有良好的可讀性、易用性以及可擴展性。 Vue作為一款流行的前端框架,也為Axios提供了全面支援。本文將介紹如何在Vue中進行Axios封裝,並介紹Axios常用的一些方法。一、Axios封裝在開發過程中,我們常常需要對Axios進行一些自訂的封裝,例如

Python作為一門高階程式語言,廣泛應用於資料分析、機器學習、Web開發等領域。然而,隨著程式碼規模不斷擴大,Python程式的可擴展性問題也逐漸顯現出來。可擴展性差錯誤是指Python程式在某些情況下無法很好地適應需求變化,無法對大規模資料進行處理,導致程式運作效果不佳。太多的依賴、糟糕的程式碼結構、缺乏文件等都是Python程式可擴展性差錯誤的罪魁禍首。

本站7月11日消息,經濟日報今天(7月11日)報道,富士康集團已進軍先進封裝領域,重點佈局時下主流的面板級扇出封裝(FOPLP)半導體方案。 1.繼旗下群創光電(Innolux)之後,富士康集團投資的夏普(Sharp)也宣布進軍日本面板級扇出式封裝領域,預計將於2026年投產。富士康集團在AI領域本身就有足夠的影響力,而補上先進封裝短板之後讓其可以提供「一條龍」服務,便於後續接受更多的AI產品訂單。本站查詢公開資料,富士康集團目前持有夏普10.5%的股權,該集團表示現階段不會增持,也不會減持,將維

如何在Go語言中實現封裝和繼承封裝和繼承是物件導向程式設計中的兩個重要概念,它們可以使程式碼更加模組化和可維護,同時也為程式碼的複用提供了便利。本文將介紹在Go語言中如何實作封裝和繼承,並提供對應的程式碼範例。封裝封裝是將資料和功能封裝,隱藏實作的細節,只暴露必要的介面給外部使用。在Go語言中,封裝是透過導出和非導出標識符來實現的。首字母大寫的標識符可以被其他包訪
