设计模式
文章平均质量分 83
userkang
这个作者很懒,什么都没留下…
展开
-
组件设计原则
前言在前端开发领域,组件开发一直是一个绕不开的话题。那么在组件开发时,要注意哪些问题?如何开发出易维护且复用性高的组件?下面就结合面向对象设计原则,和开发中的实践经验,总结一部分组件开发需要注意的几个原则。原则1、保持简单 (KISS—Keep It Simple, Stupid,Straightforward)代码足够简单,也意味着易读、易维护,bug 比较难以隐藏。往往简单的设计越高效和通用(符合奥卡姆剃刀原理)。如何满足 KISS 原则?不要过度优化。比如加入某些不常用的高级写法,或者原创 2021-03-10 18:42:04 · 3093 阅读 · 0 评论 -
那些年听过的软件设计原则
在这里想和大家说说设计中的一些原则,我认为这些东西属于长期经验总结出来的知识。这些原则,每一个程序员都应该了解。但是请不要教条主义,在使用的时候还是要多多考虑实际情况。其实,下面这些原则,不单单只是软件开发,可以推广到其它生产活动中,甚至我们的生活中。Don’t Repeat Yourself (DRY)DRY 是一个最简单的法则,也是最容易被理解的。但它也可能是最难被应用的(因为要做到这样,我们需要在泛型设计上做相当的努力,这并不是一件容易的事)。它意味着,当我们在两个或多个地方的时候发现一些相似的代转载 2021-03-03 19:07:04 · 278 阅读 · 2 评论 -
设计模式——7种坏味道和11种设计原则
设计模式作为一组抽象的设计思想,肯定有一些基本的原则。否则的话,任何设计都可以称之为”良好设计”的一种了。在设计模式中,也有整体“不允许”和“需要遵循”的方方面面。只要遵循了下面这些基本思想,写出来的设计往往都是很优秀的设计。7种坏味道僵化性:说白了就是整个系统过于僵硬,没办法或很难针对其中的某个需要修改的地方做灵活的调整,牵一发而动全身。脆弱性:这次可以调整了,但是仍然关联性太强,一个位置的小调整竟然会导致一堆逻辑上毫无关联的位置出现新的问题。牢固性:系统从一开始逻辑关联就设计得过于紧密。这次系原创 2021-03-03 18:59:13 · 305 阅读 · 2 评论 -
JS设计模式——装饰器模式
什么是装饰者模式?装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。实例拿最近比较火的吃鸡游戏(绝地求生:大逃杀PUBG)来说,游戏中每个玩家降落到岛上,刚开始是一无所有的,需要通过捡拾或掠夺装备来武装自己,然后经过互相残酷的拼杀,获得游戏的胜利。游戏过程中,我们可以把每一个玩...原创 2020-02-27 14:04:23 · 1794 阅读 · 0 评论 -
JS设计模式——Mixin模式
什么是 Mixin 模式?Mixin 模式属于结构型设计模式。正如字面意思,就是为了在一个类中能够混入另一个类的某些方法,以较低的复杂性达到复用的目的。甚至可以用来间接实现多继承。实例在 JS 中,我们利用对象原型来实现 Mixin。下面是一个全局的混入方法:注意:由于 class 中的方法是不可枚举的,但通过 Object.getOwnPropertyNames 可以返回一个数组包含...原创 2020-02-20 02:15:18 · 913 阅读 · 0 评论 -
JS设计模式——工厂模式
什么是工厂模式?工厂模式(Factory Pattern)是创建型设计模式。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来创建对象。简单工厂模式假如有一个屏幕生产工厂,生产各类屏幕。每类屏幕都是一个类,如下,我们通过屏幕工厂类提供的 createScreen 统一接口来创建屏幕对象。这便是一个简单工厂模式的应用。// 屏幕工厂类class Scre...原创 2020-02-13 01:33:07 · 1732 阅读 · 0 评论 -
JS设计模式——发布/订阅模式
发布/订阅模式和观察者模式的区别有人说发布/订阅模式就是观察者模式,有人说发布/订阅模式是观察者的变种。不管怎样,必须承认他们之间是有区别的。其中最主要的区别就是在发布/订阅模式中多了一层主题/事件通道。回想在观察者模式中,主题和观察者是直接发生关系的,观察者需要注册到主题中去。而在发布/订阅模式中,发布者和订阅者并不知道彼此的存在,他们都直接和中间层(主题/事件通道)发生关系。我们还是...原创 2019-02-13 17:36:00 · 346 阅读 · 0 评论 -
JS设计模式——单例模式
定义限制一个类只能有一个实例,并提供一个全局的单一访问点。简单的单例模式在 JS 中,可以通过对象字面量的方式去创建一个实例对象。var singleton = { prop1: 'foo', prop2: 'bar', method1: function() { console.log(123) }}上面就是一个简单单例模式的示例。如果需要添加私有变量和方法,可以把等号...原创 2019-01-30 18:36:41 · 183 阅读 · 0 评论 -
JS设计模式——揭示模块模式
由来揭示模块模式是对之前模块模式的一种改进。在模块模式中,公有属性和方法都是写在被返回的字面量对象中,这样,如果想在闭包内部调用公有属性和方法,就需要通过暴露在全局变量中的对象名称去调用。var nameSpace = (function(){ return { // 公有属性 firstName: 'Peppa', // 公有属性 lastName: 'Pig', g...原创 2019-01-29 15:07:24 · 344 阅读 · 0 评论 -
JS设计模式——模块模式
历史模块模式最早是在 2003 年提出来的,后来由 Douglas・Crockford (道格拉斯・克劳克福德)推广。Douglas・Crockford 著有《JavaScript 语言精粹》,相信很多人也看过。同时他还是 JSON、JSLint、JSMin 等工具的发明人,对 web 技术的发展功不可没。什么是模块模式?模块模式是一种解决软件中私有和公有的封装问题的方法。通过这种模式,...原创 2019-01-29 12:17:01 · 879 阅读 · 0 评论 -
JS设计模式——中介者模式
什么是中介者模式?中介者模式(Mediator)是用来降低多个对象和类之间的通信复杂性。这种模式提供一个中介类,该类通常处理不同类的通信,并支持松耦合,使代码易于维护。中介者模式属于行为模式。实现var mediator = (function () { var topics = {} // 订阅一个 topic,提供一个回调函数,一旦 topic 被广播就执行该回调 ...原创 2019-02-14 18:45:07 · 479 阅读 · 2 评论 -
JS设计模式——构造器模式
引入看过高程书的对这个设计模式应该很熟悉。构造器模式属于创建型设计模式。那么什么是创建型设计模式呢?创建型设计模式专注于处理对象的创建机制。也就是说这类模式,都和创建对象的过程密不可分。除了构造器模式属于这类模式。还有其他一些设计模式也属于创建型设计模式。比如:工厂模式抽象模式原型模式单例模式生成器模式下面还是先来谈谈构造器模式。什么是构造器?在面向对象的编程语言中,构造...原创 2019-01-28 17:02:15 · 393 阅读 · 0 评论 -
JS设计模式——观察者模式
什么是观察者模式?一个或多个观察者对目标的状态感兴趣,它们通过将自己依附在目标对象上以便注册所感兴趣的内容。目标状态发生改变并且观察者可能对这些改变感兴趣,就会发送一个通知消息,调用每个观察这的更新方法。当观察者不再对目标状态感兴趣时,他们可以简单地将自己从中分离。看完后你会觉得这是什么破玩意?不要急,我们举个现实中的例子,来按段落顺序逐步分解下上面这段话的意思。去饭馆吃饭,点完餐会...原创 2019-01-31 18:57:28 · 615 阅读 · 0 评论