OOP | 单例设计模式和工厂设计模式

文 / 景朝霞
来源公号 / 朝霞的光影笔记
ID / zhaoxiajingjing
图 / 自己画

❥❥❥❥点个赞,让我知道你来过~❥❥❥❥


0 / 单例设计模式

假设:你需要录入两个人的信息:李雷和韩梅梅。<i>不要问我他们是谁</i>

<i>我本来想举个例子,叫"妈妈喊你去相亲"。后来一想,换个例子吧,被妈妈说也就算了,看个代码还要被扎心,太可怜了吧</i>

在最开始学代码时候,我可能会这样写▽

let name = '李雷';
let age = 26;
let sex = '男';
let name = '韩梅梅';
let age = 28;
let sex = '女';

but,如果要把这两段代码放在一个js文件里,肯定会冲突啊怎么办?分个组吧:

let person1 = {
    name:'李雷',
    age:26,
    sex:'男'
};
let person2 = {
    name:'韩梅梅',
    age:28,
    sex:'女'
};

<i>△ 这样把信息分组归类了</i>

person1person2是一个对象,也叫命名空间,可以减少全局变量的污染。

以上的person1person2也是单例设计模式(singleton pattern),即:只有一个实例的对象

在JS中,以对象字面量的方式和构造函数模式是可以创建单例对象的。

单例设计模式:把描述事务的信息放到一个命名空间中进行归类,防止全局变量污染

高级单例模式:你在开发中也经常用,比如:公共模块都写在utils里面、页面模块单独写在一个JS文件里面

let utils = (function (){
    function deepCopy(){
        //.....CODE
    }
    function addHandler(){
        //....CODE
    }
    
    //...CODE
    
    return {
        deepCopy,
        addHandler
    };
})();

<i>△ 高级单例模式</i>

高级单例模式使用闭包的保护机制,让里面的代码不受外界的干扰。

函数执行会形成一个全新的私有作用域,保护里面的代码不受到外界的干扰,这种保护机制就是闭包。闭包有两个作用:保护和保存。<i>传送门:图解 | 理解闭包</i>

1 / 工厂模式

写一两个人的信息好弄,如果班里有30个人,这样一个个写得累蒙圈了,而且会产生大量的重复代码。

于是,可以造一个工厂出来,批量可以把属性都造出来:

function person(name, age, sex){
    let person = {};
    
    person.name = name;
    person.age = age;
    person.sex = sex;
    
    return person;
}

let p1 = person('李雷', 26, '男');
let p2 = person('韩梅梅', 28, '女');
let p3 = person('莉莉', 26, '女');
//....余下的人信息

<i>△ 在单例的基础上可以批量产出属性,录入信息了</i>

person就是个函数,函数的意义在于什么?封装

工厂模式:用函数来封装以特定的方式来创建对象的细节。

(1)低耦合:可以减少一个个创建对象这些冗余的代码

(2)高内聚:提高代码的重复使用率

2 / 面向对象

<i>【PS:这个概念很大,以我目前的知识储备和文字表达能力可能说的不是很清楚的,请见谅~】</i>

面向对象编程(Object Oriented Programming)

<i>还记得第一次面试,面试官问:什么是对象?答:万物皆对象【PS:那时候真勇敢呀】</i>

公号:朝霞的光影笔记

<i>△ 20.1_自然中的分类【PS:请原谅我的生物知识都还给老师了~~】</i>

"万物皆对象"中的"对象"本身只是一个泛指,任何事物都是一个对象,都可以是我们研究和面对的。

把抽象的“对象”,按照特点来进行分类(大类/小类)后,把共同的东西抽取出来,放到对应的类别中。即:“类”是对“对象”一种细分和公共部分的封装。

通过类别派生出来的具体事务叫做:类的“实例”

实例既有属于自己私有的东西,也会继承各个类别中的公有信息

*面向对象编程*****需要掌握“对象”“类”“实例”之间的关系

ID:zhaoxiajingjing

<i>△ 20.2_画个草图</i>

比如,之前写的一个选项卡:

    <div id="tabBox" class="tabBox">
        <ul id="navBox" class="navBox">
            <li class="active">代码</li>
            <li>看书</li>
            <li>运动</li>
        </ul>
        <div class="active">
            读读代码
            <p>公号:朝霞的光影笔记</p>
            <p>ID:zhaoxiajingjing</p>
        </div>
        <div>
            书中自有颜如玉
            <p>公号:朝霞的光影笔记</p>
            <p>ID:zhaoxiajingjing</p>
        </div>
        <div>
            瘦子生活模式,好好吃饭,好好生活
            <p>公号:朝霞的光影笔记</p>
            <p>ID:zhaoxiajingjing</p>
        </div>
    </div>
ID:zhaoxiajingjing

<i>△ 20.3_查看元素</i>


公号:朝霞的光影笔记

<i>△ 20.4 研究一个实例</i>

研究一个实例:

1、私有的信息

2、所属类公有的信息

3、一层层从小类别一直找到Object为止,研究属性和方法

dir(tabBox)
|=>__proto__:HTMLDivElement.prototype
|=>__proto__:HTMLElement.prototype
|=>__proto__:Element.prototype
|=>__proto__:Node.prototype
|=>__proto__:EventTarget.prototype
|=>__proto__:Object.prototype

3 / 预告

请问:原型和原型链是啥?


ID:zhaoxiajingjing
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,968评论 6 482
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,601评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,220评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,416评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,425评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,144评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,432评论 3 401
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,088评论 0 261
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,586评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,028评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,137评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,783评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,343评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,333评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,559评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,595评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,901评论 2 345