分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > IT知识

js之单例模式

发布时间:2023-09-06 02:08责任编辑:傅花花关键词:js

单例模式是指一个类,只有一个实例。实现的思路是,创建实例时候加判断,如果有实例则返回,如果没有就new一个,并返回。

第一步: 创建类。

function Waiter(id, name, salary) { // 创建了一个Waiter类 ???????Employees.call(this, id, name, salary) // 这里Waiter继承了Employees,Employees是个父类,也可以没有
} ???Waiter.prototype = Object.create(Employees.prototype); ???Waiter.prototype.constructor= Waiter; ???Waiter.prototype.work = function (arg) { // 重写原型上的方法 ???????if (arg instanceof Array){ //数组的话,记录点菜 ???????????console.log(‘finish order dish $记录work‘); ???????????return this; ???????} else { //上菜行为 ???????????console.log(‘finish serving a dish $记录work‘) ???????} ???}; ???// cook调用的方法,返回菜单 ???Waiter.prototype.tellCookTheMenu = function () { ???????return this.menu; ???}; ???// cook调用的方法,拿到做好的菜 ???Waiter.prototype.serving = function () { ???????this.work();// 上菜行为 ???????this.customer.eat(); ???};

第二步:使用return结果,这里有判断。

 return { ???????name: ‘waiter‘, ???????getWaiterInstance: function (...arg) { ???????????if (!waiter) { ???????????????waiter = new Waiter(...arg) ???????????} ???????????return waiter; ???????} ???}

第三部:将1、2整合

//服务员 单例var waiterSingle = (function () { // 是一个立即执行函数,并将执行的结果赋值给waiterSingle ???var waiter = null; // 实例存在这个变量里 ???function Waiter(id, name, salary) { ???????Employees.call(this, id, name, salary) ???} ???Waiter.prototype = Object.create(Employees.prototype); ???Waiter.prototype.constructor= Waiter; ???Waiter.prototype.work = function (arg) { // 重写原型上的方法 ???????if (arg instanceof Array){ //数组的话,记录点菜 ???????????console.log(‘finish order dish $记录work‘); ???????????return this; ???????} else { //上菜行为 ???????????console.log(‘finish serving a dish $记录work‘) ???????} ???}; ???// cook调用的方法,返回菜单 ???Waiter.prototype.tellCookTheMenu = function () { ???????return this.menu; ???}; ???// cook调用的方法,拿到做好的菜 ???Waiter.prototype.serving = function () { ???????this.work();// 上菜行为 ???????this.customer.eat(); ???}; ???// 从顾客order方法,拿到点的菜 ???Waiter.prototype.getMenu = function (arg) { ???????this.customer = arg; ???????this.menu = arg.dish; ???????console.log(‘waiter get the menu‘, this.menu); ???????return this; ???}; ???return { ???????name: ‘waiter‘, ???????getWaiterInstance: function (...arg) { ???????????if (!waiter) { ?// 判断如果waiter里没有,则new,并赋值给waiter ???????????????waiter = new Waiter(...arg) ???????????} ???????????return waiter; ???????} ???}})();

第四步:创建实例方式

var waiter = waiterSingle.getWaiterInstance(2, ‘Lucy‘, 5000);

js之单例模式

原文地址:https://www.cnblogs.com/yadiblogs/p/9433836.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved