首页
学习
活动
专区
工具
TVP
发布

coding for love

专栏作者
146
文章
138005
阅读量
33
订阅数
TS 设计模式08 - 发布订阅模式
前面介绍了观察者模式,就好比我们去点餐,通知服务员说,餐好了跟我说一下。那么服务员和顾客之间就形成了耦合,首先服务员得知道餐品好了以后通知那些顾客,其次,如果是多位服务员协作,每个服务员都需要知道这些顾客。
love丁酥酥
2020-09-19
1K0
TS 设计模式07 - 观察者模式
观察者模式是一种对象行为模式。它定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。
love丁酥酥
2020-09-08
2980
TS 设计模式06 - 代理模式
代理,顾名思义,就是替委托者处理事情。通过代理,客户不必要去接触真实的目标对象,转而去接触目标对象的代理,即可达成目的。
love丁酥酥
2020-09-08
1.1K0
TS 设计模式05 - 装饰者模式
在 oop 中,继承是实现多态最简单的方案。同一类的对象会有不同表现时,我们基于此基类去写派生类即可。但有时候,过度使用继承会导致程序无法维护。比如说,人有一个展示自己外观的方法,穿上不同的衣服这个展现形式就不一样。一个人可以选择穿 T-shirt,裤子,裙子,外套等等,它的顺序和搭配是不固定的,如果使用继承,我们对每种组合都需要去定义一个类,比如穿裤子的人,穿裙子的人,穿裤子和裙子的人,先穿裤子再穿外套的人......这样会是我们的程序变得非常庞大而难以维护。 事实上,不管穿什么衣服,本质上仍然是人,衣服只是基于人类的装饰而已。装饰器模式允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。
love丁酥酥
2020-09-01
1.1K0
TS 设计模式04 - 适配器模式
笔记本实际上使用的是 12V 直流电,但是我们电源线是插在 220V 的交流电源上。我们不能把 220V 的交流电源直接改成符合要求的 12V 直流电源,因为不便于运输,也没法让笔记本直接使用 220V 的交流电,因为其元器件无法承担。 220V 交流电源和笔记本本质上是无法直接放到一起工作的,那么就需要电源适配器的辅助。它能够利用 220V 交流电源获取电能,并转换成 12V 直流电输出给笔记本。 这就是适配器模式,将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
love丁酥酥
2020-08-11
4220
TS 设计模式03 - 单例模式
单例模式的概念很简单,就是在整个程序中有且仅有一个实例。这种场景其实是很常见的,比如我们的程序中存放当前用户信息的类,就只有一个实例,这样从任何地方获取其中信息时,都是拿的同一个对象的信息,保证状态的一致性。
love丁酥酥
2020-07-28
1.3K0
TS 设计模式02 - 建造者模式
工厂模式,为我们将客户端的生产行为封装起来,交给了工厂。它本质上是服务于客户端的,并没有降低产品生产的难度,产品的生产逻辑仍然在自己的类内部实现。 对于一些复杂的产品类(工序多,参数多),我们需要在内部维护其复杂的构建逻辑,是很容易出错的。 举一个简单的例子,生产牛肉汉堡,我们不管是由客户端去生产,还是工厂帮我们生产,建造的逻辑始终写在其 constructor 内部。全部生产步骤可能包含,做面包,做牛肉,放蔬菜,每个步骤可能有不同的参数控制,比如几片面包,几片牛肉或者几片蔬菜。如果我们发现之前的工序不好,需要调整工序,要么在类内部进行修改(违法开闭),要么新增一个类(成本太大,也不好维护),或者说我们要做猪肉汉堡,步骤和工序是一样的,我们新建一个类时由于步骤复杂,可能漏了或写错了。 那怎么办呢,建造者模式就是帮助我们创建一个复杂对象的,它将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。比如我规定汉堡的构建工序是可以稳定地划分为,做面包,做肉,放蔬菜的,至于你具体是面包是做成方形的圆形的,肉要是什么类型,蔬菜是什么类型,这是具体的实现步骤,对不同的汉堡具体的实现不一样。
love丁酥酥
2020-07-28
5810
TS 设计模式01 - 工厂模式
工厂,在现实中是生产产品的地方。在 oop 中,就是生产对象的地方。其核心是封装一个生产(new)行为。
love丁酥酥
2020-07-22
7550
JS 设计准则和设计原则
在学习具体的设计模式之前,首先有必要弄清楚我们学习的目的之所在。 设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。项目中合理地运用设计模式可以完美地解决很多问题,每种模式在现实中都有相应的原理来与之对应,每种模式都描述了一个在我们周围不断重复发生的问题,以及该问题的核心解决方案,这也是设计模式能被广泛应用的原因。 而这些设计模式,代表的是一种解决问题的思想。我们在解决问题和设计这些模式的时候本身也是有原则可循的,甚至可以制定一些需要强制遵守的准则。
love丁酥酥
2020-07-15
7490
第 8 章 软件测试
简介 8.1 开发测试 8.1.1 单元测试 8.1.2 选择单元测试用例 8.1.3 构件测试 8.1.4 系统测试 8.2 测试驱动的开发 8.3 发布测试 8.3.1 基于需求的测试 8.3.2
love丁酥酥
2020-07-13
3180
JS 数据类型的四种检测方法
我们在代码中经常要对数据类型进行判断,大家熟知的应该是 typeof,那么它有什么不足,有没有其他方法来进行类型检测呢?
love丁酥酥
2020-07-10
1.5K0
第 7 章 设计和实现
简介 image.png image.png 本章有以下两个目的: image.png 7.1 使用 UML 的面向对象设计 image.png 7.1.1 系统上下文和交互 image.png im
love丁酥酥
2020-07-06
3140
第 6 章 体系结构设计
简介 6.1 体系结构设计决策 6.2 体系结构图 6.3 体系结构模式 6.3.1 分层体系结构 image.png 6.3.2 知识库体系结构 6.3.3 客户 - 服务器体系结构 image.p
love丁酥酥
2020-07-03
6080
第 5 章 系统建模
理解一个系统模型并不是系统的一个完备表示,这点很重要。系统模型有意抹去一些细节以使模型更容易理解。模型研究的是系统的一种抽象而不是系统的另一种表示。
love丁酥酥
2020-07-02
5230
第 4 章 需求工程
简介 4.1 功能型需求和非功能性需求 4.1.1 功能性需求 4.1.2 非功能性需求 4.2 需求工程过程 4.3 需求抽取 image.png 4.3.1 需求抽取技术 image.png 4.
love丁酥酥
2020-07-01
3550
第 3 章 敏捷软件开发
简介 3.1 敏捷方法 敏捷方法的原则 3.2 敏捷开发技术 极限编程(Extrame Programming, XP)改变了软件开发文化。 XP 方法的发布周期 3.2.1 用户故事 3.2.2 重
love丁酥酥
2020-06-23
2960
第 2 章 软件过程
虽然有许多不同的软件过程,但都必须包含在第 1 章所介绍的 4 个最基本的软件工程活动中:
love丁酥酥
2020-06-23
2890
第 1 章 概述
专业化开发与个人化开发的关键区别在于,专业化软件会提供给用户使用,且通常由团队开发和维护。软件工程的目的是支持专业化的软件开发而非个人编程。
love丁酥酥
2020-06-23
4140
6-4~7 Bundler 源码编写
我们获取到了文本以后,如果直接就拿来分析依赖当然也可以,但是处理起来非常麻烦,效率也低下,尤其是文件内容复杂的时候。所以我们需要将文本转化为 js 可直接操作的对象 ast。 前面我们讲到了 babel,它可以将 js 源文件根据我们的需要做内容变更,比如将我们的 es6 编写的源文件转成 es5,其实就是将我们的源文件内容先转为 ast 再去实现后续变更的。它有一个专门负责转换的模块,叫做 baben/parser,前身是 babylon。
love丁酥酥
2020-06-08
4560
6-3 如何编写一个 plugin
插件向第三方开发者提供了 webpack 引擎中完整的能力。使用阶段式的构建回调,开发者可以引入它们自己的行为到 webpack 构建流程中。插件能够 钩入(hook) 到在每个编译(compilation)中触发的所有关键事件。在编译的每一步,插件都具备完全访问 compiler 对象的能力,如果情况合适,还可以访问当前 compilation 对象。
love丁酥酥
2020-06-02
4720
点击加载更多
社区活动
Python精品学习库
代码在线跑,知识轻松学
热点技术征文第五期
新风口Sora来袭,普通人该如何把握机会?
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·干货材料·成员作品·最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档