中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

做貿(mào)易進出口要什么網(wǎng)站平臺網(wǎng)絡(luò)銷售好做嗎

做貿(mào)易進出口要什么網(wǎng)站平臺,網(wǎng)絡(luò)銷售好做嗎,客服出售用戶信息獲利24萬,北京網(wǎng)頁設(shè)計概念 大量的 if 判斷操作,邏輯比較復(fù)雜,并且處理起來相對麻煩??梢圆捎貌呗阅J絹韮?yōu)化分支代碼。 策略模式 💤:是一種行為設(shè)計模式,它允許你在運行時根據(jù)不同情況選擇不同的算法或行為。 設(shè)計模式 🤌&…

概念

大量的 if 判斷操作,邏輯比較復(fù)雜,并且處理起來相對麻煩。可以采用策略模式來優(yōu)化分支代碼。
策略模式 💤:是一種行為設(shè)計模式,它允許你在運行時根據(jù)不同情況選擇不同的算法或行為。
設(shè)計模式 🤌:就是提前第一次了解全過程,第二次直接規(guī)劃不必要的坑。
我們在寫代碼亦是如此,一定也遇到過許多類似的場景。隨著程序員經(jīng)驗的增加,我們對于這些常見場景的處理越來越得心應(yīng)手,甚至總結(jié)出了針對性的“套路”,下次遇到此類問題直接運用“套路”解決,省心又省力。這些在軟件開發(fā)過程中逐漸積累下來的“套路”就是設(shè)計模式。

設(shè)計模式的目標(biāo)之一就是提高代碼的可復(fù)用性、可擴展性和可維護性。正因如此,雖然有時候我們不知道某個設(shè)計模式,但是看了相關(guān)書籍或文章后會有一種“啊,原來這就是設(shè)計模式”的恍然大明白。

例:

const game = (name) => {if (name === "原s") {console.log("啟動!");} else if (name === "xx精英") {console.log("我先成盒了你們加油!");} else if (name === "云頂yy") {console.log("這就是我們之間的羈絆!");} else if (name === "王者zz") {console.log("我再也不買皮膚了!");} else {console.log("我啥也沒玩");}
};
game("原s"); // 啟動!

簡單優(yōu)化一下寫法:

const game = (name) => {let obj = {原s: "啟動!",xx精英: "我先成盒了你們加油!",云頂yy: "這就是我們之間的羈絆!",王者zz: "我再也不買皮膚了!",};if (obj[name]) {console.log(obj[name]);} else {console.log("我啥也沒玩");}
};
game("原s"); // 啟動!

這種寫法只是參考了策略模式的思路,將邏輯封裝到一個對象中。這種方式使得這個對象能夠獨立出來,只需專注于維護這個對象本身即可。如果要是每個方法都不同,那該如何去寫呢?接著往下看

const game = (name) => {let obj = {原s: () => {console.log("啟動!");},xx精英: () => {console.log("我先成盒了你們加油!");},云頂yy: () => {console.log("這就是我們之間的羈絆!");},王者zz: () => {console.log("我再也不買皮膚了!");},};if (obj[name]) {obj[name]();} else {console.log("我啥也沒玩");}
};game("原s"); // 啟動!

這種寫法就是將對象中的處理邏輯單獨封裝成一個函數(shù),讓他內(nèi)部自己處理自己所用到的邏輯。

下面這種寫法代碼更加靈活和可擴展,也是我比較推薦的寫法。

const strategies = {原s: () => console.log("啟動!"),xx精英: () => console.log("我先成盒了你們加油!"),云頂yy: () => console.log("這就是我們之間的羈絆!"),王者zz: () => console.log("我再也不買皮膚了!"),
};function executeStrategy(name) {if (strategies[name]) {strategies[name]();} else {console.log("我啥也沒玩");}
}executeStrategy("原s");

在這個例子里面,我們可以將游戲名作為參數(shù)傳遞給函數(shù),而不是在函數(shù)內(nèi)部定義多個條件。這樣,我們就可以將函數(shù)封裝成一個可復(fù)用的策略,以便在將來添加更多的游戲名稱。

1. 案例

下面看一下使用場景,比如我們需要做一個 from 表單驗證,需要驗證手機號和密碼

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>表單</title><script src="./src/index.js"></script></head><body><form id="login-form" action="" method="post"><label for="account">手機號</label><input type="number" id="account" name="account" /><label for="password">密碼</label><input type="password" id="password" name="password" /><button id="login">登錄</button></form><script>let loginForm = document.getElementById("login-form");loginForm.onsubmit = function (e) {e.preventDefault();let account = document.getElementById("account").value;let pwd = document.getElementById("password").value;if (account === null || account === "") {console.log("手機號不能為空");return false;}if (pwd === null || pwd === "") {console.log("密碼不能為空");return false;}if (!/(^1[3|4|5|7|8][0-9]{9}$)/.test(account)) {console.log("手機號格式錯誤");return false;}if (pwd.length < 6) {console.log("密碼不能小于六位");return false;}// 模擬ajax請求setTimeout(() => {console.log("登錄成功!");}, 1000);};</script></body>
</html>

在這里可以發(fā)現(xiàn)問題也是很明顯的,如果你想說他能跑起來嗎?他也能跑起來,但是里面的 if 語句到處都是,每次新增一種校驗,需要整體去調(diào)整這個 loginForm.onsubmit 代碼,復(fù)用性也很差,只能手動矯正

2. 優(yōu)化

先將此方法抽離出來

let obj = {isNonEmpty: function (value, errorMsg) {if (value === "" || value === null) {return errorMsg;}},isMobile: function (value, errorMsg) {// 手機號碼正則if (!/(^1[3|4|5|7|8][0-9]{9}$)/.test(value)) {return errorMsg;}},minLength: function (value, errorMsg) {if (value.length < length) {return errorMsg;}},
};

修改 Context 內(nèi)容部分

let loginForm = document.getElementById("loginForm");loginForm.onsubmit = function (e) {e.preventDefault();let phone = strategies.isMobile(account, "手機號格式錯誤");let pwdMinLength = strategies.minLength(pwd, "密碼不能小于六位");let error = accountIsMobile || pwdMinLength;if (error) {console.log(error);return false;}
};

完整代碼如下

<div><form id="loginform" action="" method="post"><label for="account">手機號</label><input type="number" id="account" name="account" /><label for="password">密碼</label><input type="password" id="password" name="password" /><button id="login">登錄</button></form>
</div>
let account = ""; // 這里的變量需要初始化一下,不然無法獲取到value
let pwd = "";let loginForm = document.getElementById("loginform");
let strategies = {isNonEmpty: function (value, errorMsg) {if (value === "" || value === null) {return errorMsg;}},isMobile: function (value, errorMsg) {// 手機號碼格式if (!/(^1[3|4|5|7|8][0-9]{9}$)/.test(value)) {return errorMsg;}},minLength: function (value, length, errorMsg) {console.log(value);if (value.length < length) {return errorMsg;}},
};loginForm.addEventListener("submit", (e) => {account = document.getElementById("account").value;pwd = document.getElementById("password").value;e.preventDefault();let phonenull = strategies.isNonEmpty(account, "手機號不能為空");let phone = strategies.isMobile(account, "手機號格式錯誤");let pwdMinLength = strategies.minLength(pwd, 6, "密碼不能小于六位");let error = phonenull || phone || pwdMinLength;if (error) {console.log(error);return false;} else {console.log("提交成功!");}
});
http://m.risenshineclean.com/news/62907.html

相關(guān)文章:

  • 怎么申請 免費網(wǎng)站站長工具排行榜
  • 企業(yè)網(wǎng)站建設(shè)空間如何免費推廣網(wǎng)站
  • 公司網(wǎng)站 用 個人備案域名藝考培訓(xùn)學(xué)校
  • 購買網(wǎng)站空間的方法南寧seo公司
  • 服務(wù)器網(wǎng)站怎么用360渠道推廣系統(tǒng)
  • 做外貿(mào)網(wǎng)站要花多少錢怎么制作網(wǎng)頁教程
  • 可以做動效的網(wǎng)站產(chǎn)品網(wǎng)絡(luò)營銷策劃方案
  • 51一起做網(wǎng)站0元做游戲代理
  • 做社交網(wǎng)站寧波企業(yè)seo推廣
  • 廈門稅務(wù)門戶網(wǎng)站怎么提高關(guān)鍵詞搜索排名
  • 嵊州市建設(shè)局網(wǎng)站武漢seo優(yōu)化服務(wù)
  • 沈陽企業(yè)自助建站系統(tǒng)營銷策略的思路
  • 網(wǎng)站在建設(shè)中無法訪問seo站內(nèi)優(yōu)化教程
  • 搭建英文網(wǎng)站公關(guān)公司提供的服務(wù)有哪些
  • php網(wǎng)站開發(fā)api投放廣告的網(wǎng)站
  • 做網(wǎng)站怎么選云主機免費制作自己的網(wǎng)頁
  • 網(wǎng)絡(luò)公司網(wǎng)站首頁企業(yè)推廣宣傳文案
  • 微信網(wǎng)站建設(shè)費用計入什么科目邯鄲網(wǎng)站優(yōu)化
  • wapcms建站系統(tǒng)資源網(wǎng)
  • 做自己的網(wǎng)站能賺錢嗎軟文廣告500字
  • wordpress qq在線聊天搜索引擎優(yōu)化自然排名
  • 網(wǎng)站 多語言廣東新聞今日大件事
  • 怎么做網(wǎng)站添加二維碼網(wǎng)絡(luò)軟文寫作
  • 濟南專門做公司網(wǎng)站的公司windows優(yōu)化大師使用方法
  • 長春網(wǎng)站品牌seo培訓(xùn)咨詢
  • 免費建設(shè)網(wǎng)站公司哪家好網(wǎng)站百度收錄
  • 個人網(wǎng)站做博客還是做論壇2023網(wǎng)站seo
  • 深圳網(wǎng)站建設(shè)加盟無錫網(wǎng)絡(luò)公司
  • 網(wǎng)站建設(shè)基地百度推廣員工工資怎么樣
  • 蕪湖做的好的招聘網(wǎng)站百度seo在哪里