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("新增出现异步,请得新增加或联系技术管理员"); } }); });
上面这二个代码片段简单描述了,增加和删除功能的JS代码。有的同学发现了,他们有共同点,就是ajax请求中有一部分是相同的,并且删除功能如果在其它地方也用到呢?,那在其它地方也要写一代码这种相同的代码。感觉很不舒服
我们改进一下
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中文网其它相关文章!
推荐阅读:
Atas ialah kandungan terperinci Singleton封装增删改查. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Menurut berita dari laman web ini pada 17 April, TrendForce baru-baru ini mengeluarkan laporan, mempercayai bahawa permintaan untuk produk platform Blackwell baharu Nvidia adalah menaik, dan dijangka memacu jumlah kapasiti pengeluaran pembungkusan CoWoS TSMC meningkat lebih daripada 150% pada 2024. Produk platform baharu NVIDIA Blackwell termasuk GPU siri B dan kad pemecut GB200 yang menyepadukan CPU GraceArm NVIDIA sendiri. TrendForce mengesahkan bahawa rantaian bekalan pada masa ini sangat optimistik tentang GB200, dengan penghantaran dijangka melebihi satu juta unit pada 2025, menyumbang 40-50% daripada GPU mewah Nvidia. Nvidia merancang untuk menyampaikan produk seperti GB200 dan B100 pada separuh kedua tahun ini, tetapi pembungkusan wafer huluan mesti terus menggunakan produk yang lebih kompleks.

Laman web ini melaporkan pada 9 Julai bahawa pemproses siri "Strix" seni bina AMD Zen5 akan mempunyai dua penyelesaian pembungkusan StrixPoint yang lebih kecil akan menggunakan pakej FP8, manakala StrixHalo akan menggunakan pakej FP11. Sumber: sumber videocardz @Olrak29_ Pendedahan terbaru ialah saiz pakej FP11 StrixHalo ialah 37.5mm*45mm (1687 milimeter persegi), yang sama dengan saiz pakej LGA-1700 bagi CPU Intel AlderLake dan RaptorLake. Phoenix APU terbaru AMD menggunakan penyelesaian pembungkusan FP8 dengan saiz 25*40mm, yang bermaksud bahawa StrixHalo's F

Dengan merangkum kod, fungsi C++ boleh meningkatkan kecekapan pembangunan GUI: Pengkapsulan kod: Fungsi kod kumpulan ke dalam unit bebas, menjadikan kod lebih mudah difahami dan diselenggara. Kebolehgunaan semula: Fungsi mencipta kefungsian biasa yang boleh digunakan semula merentas aplikasi, mengurangkan pertindihan dan ralat. Kod ringkas: Kod berkapsul menjadikan logik utama ringkas dan mudah dibaca serta nyahpepijat.

Teknologi enkapsulasi dan enkapsulasi aplikasi dalam PHP ialah konsep penting dalam pengaturcaraan berorientasikan objek Ia merujuk kepada merangkum data dan operasi pada data bersama-sama untuk menyediakan antara muka akses bersatu kepada program luaran. Dalam PHP, enkapsulasi boleh dicapai melalui pengubahsuai kawalan akses dan definisi kelas. Artikel ini akan memperkenalkan teknologi enkapsulasi dalam PHP dan senario aplikasinya, dan menyediakan beberapa contoh kod khusus. 1. Pengubah suai kawalan capaian berkapsul Dalam PHP, pengkapsulan dicapai terutamanya melalui pengubahsuai kawalan capaian. PHP menyediakan tiga pengubah kawalan akses,

Pengenalan kepada pengkapsulan Axios dan kaedah biasa dalam Vue Axios ialah perpustakaan HTTP berdasarkan Promise Kelebihannya ialah ia mempunyai kebolehbacaan yang baik, kemudahan penggunaan dan kebolehskalaan. Sebagai rangka kerja bahagian hadapan yang popular, Vue juga menyediakan sokongan penuh untuk Axios. Artikel ini akan memperkenalkan cara merangkum Axios dalam Vue, dan memperkenalkan beberapa kaedah Axios yang biasa digunakan. 1. Enkapsulasi Axios Semasa proses pembangunan, kita selalunya perlu melakukan beberapa enkapsulasi tersuai bagi Axios, seperti

Menurut berita dari laman web ini pada 11 Julai, Economic Daily melaporkan hari ini (11 Julai) bahawa Foxconn Group telah memasuki bidang pembungkusan lanjutan, memfokuskan pada penyelesaian semikonduktor pembungkusan kipas peringkat panel arus perdana (FOPLP). 1. Berikutan anak syarikatnya Innolux, Sharp, yang dilaburkan oleh Foxconn Group, turut mengumumkan kemasukannya ke dalam bidang pembungkusan kipas peringkat panel Jepun dan dijangka akan dikeluarkan pada 2026. Foxconn Group sendiri mempunyai pengaruh yang mencukupi dalam bidang AI, dan dengan menebus kekurangannya dalam pembungkusan lanjutan, ia boleh menyediakan perkhidmatan "sehenti" untuk memudahkan penerimaan lebih banyak pesanan produk AI pada masa hadapan. Menurut maklumat awam di laman web ini, Foxconn Group pada masa ini memegang 10.5% saham Sharp Kumpulan itu menyatakan bahawa ia tidak akan menambah atau mengurangkan pegangannya pada peringkat ini dan akan mengekalkan pegangannya.

Cara melaksanakan enkapsulasi dan pewarisan dalam bahasa Go Enkapsulasi dan pewarisan ialah dua konsep penting dalam pengaturcaraan berorientasikan objek Ia boleh menjadikan kod lebih modular dan boleh diselenggara, dan juga memberikan kemudahan untuk penggunaan semula kod. Artikel ini akan memperkenalkan cara melaksanakan pengkapsulan dan pewarisan dalam bahasa Go dan memberikan contoh kod yang sepadan. Enkapsulasi Enkapsulasi adalah untuk merangkum data dan fungsi, menyembunyikan butiran pelaksanaan, dan hanya mendedahkan antara muka yang diperlukan untuk kegunaan luaran. Dalam bahasa Go, enkapsulasi dicapai melalui pengecam yang dieksport dan tidak dieksport. Pengecam dengan huruf besar boleh diakses oleh pakej lain

Sebagai bahasa pengaturcaraan peringkat tinggi, Python digunakan secara meluas dalam analisis data, pembelajaran mesin, pembangunan web dan bidang lain. Walau bagaimanapun, apabila saiz kod terus berkembang, masalah kebolehskalaan program Python secara beransur-ansur menjadi jelas. Ralat kebolehskalaan yang lemah bermakna program Python tidak dapat menyesuaikan diri dengan baik kepada perubahan dalam keperluan dalam keadaan tertentu dan tidak dapat memproses data berskala besar, mengakibatkan prestasi program yang lemah. Terlalu banyak kebergantungan, struktur kod yang lemah, kekurangan dokumentasi, dsb. semuanya menjadi punca kepada ralat kebolehskalaan yang lemah dalam program Python.
