
设计模式
问若
这个作者很懒,什么都没留下…
展开
-
设计模式之外观模式
外观模式是封装思想的一种表现形式,它可以帮助我们隐藏系统的复杂性,只给用户提供一个可以访问的接口。 外观模式非常容易理解和实现,它属于结构型设计模式。场景模拟假设一台电脑,它包含了 CPU(处理器),Memory(内存) ,Disk(硬盘)这几个部件,若想要启动电脑,则先后必须启动 CPU、Memory、Disk,关闭时也需要按照相应顺序。利用门面模式可以将开关过程简化。 class CPU { startup():void{ console.log("cpu s原创 2020-06-29 13:41:21 · 1192 阅读 · 0 评论 -
设计模式之装饰器模式
装饰器模式允许向一个现有的对象添加新功能,同时又不改变其结构。装饰器模式用于对现有类的包装,它属于结构型模式。一般的,我们为了扩展一个类经常使用继承方式实现,由于继承为类引入静态特征,并且随着扩展功能的增多,子类会很膨胀。动态地给一个对象添加一些额外的职责。就增加功能来说,装饰器模式相比生成子类更为灵活。场景模拟装饰器模式在游戏中应用非常广泛,比如LOL英雄升级,每次英雄升级都会附加一个额外技能学习的场景。英雄升级是原有结构,所学习技能便是一个附加描述。interface Hero {原创 2020-06-28 16:51:54 · 339 阅读 · 0 评论 -
设计模式之组合模式
组合模式是一种树状结构的专用模式,主要用来组合对象。它可以比较清晰的显示出部分和整体层次,因为这种模式的妙用在于整合而不是创建,因此我们常把他看做结构型模式的一种。场景描述某公司CEO下设有销售经理和市场经理,两个经理下各自有自己的下属员工,现遍历公司人员结构树,打印所有人员的薪资职位等状况。代码实现下面是改写自菜鸟教程的一段示例代码:class Employee { name: string; dept: string; salary: number;原创 2020-06-24 15:15:05 · 252 阅读 · 0 评论 -
过滤器模式与责任链模式
过滤器模式又被称为标准模式,这种模式主要使用不同标准来过滤一组对象。过滤的过程便是一个层层筛选的过程,因此过滤器模式属于结构型设计模式的一种。由于实际开发中过滤器模式的使用方式往往要和责任链模式结合使用。所以这里也需要一并介绍下责任链模式。责任链模式顾名思义就是创建一个链条,经过这个链条处理的所有对象和数据分别进行依次加工,每个环节负责处理不同的业务,环节间彼此独立解耦,同时可以复用。使用过gulp的同学应该很好理解责任链,因为gulp本身的文件处理机制便是基于责任链模式设计,使用链式调用,不同的lo原创 2020-06-23 10:56:28 · 4933 阅读 · 0 评论 -
设计模式之桥接模式
桥接模式是指将抽象和实现放在两个不同的类层次中,使它们可以独立地变化。它属于结构型设计模式的一种。桥接模式主要用于解决双维度扩展问题。应用场景:1、如果一个系统需要在构建的抽象化角色和具体化角色之间增加更多的灵活性,避免在两个层次之间建立静态的继承联系,通过桥接模式可以使它们在抽象层建立一个关联关系。2、对于那些不希望使用继承或因为多层次继承导致系统类的个数急剧增加的系统,桥接模式尤为适用。3、一个类存在两个独立变化的维度,且这两个维度都需要进行扩展。模拟场景假设现在有这样一个剧院,每周原创 2020-06-18 11:06:55 · 216 阅读 · 0 评论 -
设计模式之适配器模式
设计模式之适配器模式 适配器模式是一种结构型的设计模式。它的主要作用是作为一个连接器实现不同方法或接口之间的兼容调用。家里装过空调的朋友都知道,空调作为一种大功率的家用电器,接入线的功率和普通家用电器的接入线是不同的。普通电器的接入线为10A,但是空调的接入线是16A,普通家庭里的安装的插孔大多也都是10A,因此要解决这个问题,我们就需要一个支持输入端为10A,输出端为16A的插排。// 电源class ElectricSource { constructor(){ thi原创 2020-06-16 16:17:25 · 192 阅读 · 0 评论 -
设计模式之原型模式
原型模式是快速创建重复对象的一种最佳模式。 这里所说的原型是我们要创建的实例的原始模型,不是js中某个方法或对象的原型属性。在javaScript中因为需要渲染各种数据,尤其是在使用基于数据驱动的vue或react等框架进行开发时经常会遇到需要数据拷贝的情况。除此之外,关于前端的数据缓存方法的封装等也常常需要考虑到数据的拷贝,原型模式其实在不知不觉间就被使用了。class ProtypeMain { constructor() { this.map = new Map();原创 2020-06-08 17:02:54 · 155 阅读 · 0 评论 -
设计模式之建造者模式
设计模式之建造者模式什么是建造者模式?建造者模式是把简单对象构造成复杂对象的一种模式。 它也是一种创建型的设计模式,只不过它的产物一般是一个复杂的对象,而且这个对象在组合构建时是可变的。什么时候使用建造者模式?上边说到建造者模式的功能是用来创建复杂对象。如果一个对象是有多个可变的属性组成,且根据场景不同,这些属性的值是可变的,那么如果只靠传参来控制一定是一件非常头疼的事。这个时候就可以考虑使用建造者模式简化创建过程,同时使对象的创建过程变得更可控。比如说,现在老王有个施工队,这个施工队负责到处给别原创 2020-06-07 15:30:55 · 187 阅读 · 0 评论 -
设计模式之抽象工厂模式
设计模式之抽象工厂模式简介总结简介抽象工厂是比工厂模式更高端的一种创建型设计模式,他主要用来创建工厂。比如说老王之前开了一家文具厂,可是生意越做越大,老王现在还想办服装厂,玩具厂,食品厂等等。老王财大气粗一口气要办十几个跨行业的厂房,但是一个人毕竟精力有限,最好的办法是在自己和下属的厂房之间设立一个部门,专门负责新厂房的修建和新业务的扩展。这样老王如果想了解厂房的情况只需要问责这个部门就可以了。看下代码实现:// 父类 文具 class Stationery { constructor(原创 2020-05-25 15:49:12 · 305 阅读 · 0 评论 -
设计模式之工厂模式
设计模式之工厂模式简介优缺点总结简介工厂模式是设计模式中一种最常用的创建型设计模式。我们之所以称其为创建型模式是因为它主要用来创建新的对象。在实际开发过程中你常常会遇到需要创建对象的情况,这些对象可能大同小异,每次单独创建会增加代码量且不易于后期维护,所以就可以将这一部分封装为公共方法,命名为工厂方法。举个例子: 老王是一家文具厂的厂长,文具厂里可以生产多种文具,当零售商到文具厂批发货物时会指定要购买哪种文具。// 父类文具class Stationery { getType(){原创 2020-05-24 14:20:46 · 226 阅读 · 0 评论 -
设计模式之单例模式
单例模式又被称为单体模式,它是一种非常基本但使用频率很高的设计模式。它的基本设计思想是将代码组织为一个逻辑单元,这个逻辑单元中的代码只能通过单一的变量进行访问。通俗点说就是一个对象只能被实例化一次。由于它确保了访问入口的唯一,所以可以保证所有的代码使用到相同的全局资源。 基本的单例模式 最基本的单例模式实际上就是一个对象字面量,当然,你也可以称它为一个命名空间。var si...原创 2018-07-06 16:12:53 · 247 阅读 · 0 评论