设计模式
aliven1
前端工程师,技术栈:PS、AI、H5、CSS3、JS、TS、jQuery、vue、react、微信小程序、node、express、svn、git、webpack
展开
-
java中的工厂模式
工厂模式的概念 1.简单的工厂模式 专门有创建指定实例的类,返回对应的类实例,不用自己使用new创建类,实现创建实例和调用实例的分离。弊端是如果有新的类,需要修改工厂类,违反了开放封闭原则 ...原创 2022-02-16 15:31:14 · 147 阅读 · 0 评论 -
java单例模式的实现(饿汉式vs懒汉式,数据库连接池)
饿汉式实现 懒汉式实现 饿汉式和懒汉式的区别 单例的使用 单例模式的应用场景 数据库连接池:数据库连接池是单例,控制连接数等信息,不够再扩容原创 2022-02-11 18:25:49 · 829 阅读 · 0 评论 -
中介者模式--其它设计模式
class A{ constructor(){ this.number=0; } setNumber(num,m){ this.number=num; // 通过中介者赋值 if(m){ m.setB(); } } } class B{ constructor(){ this.number=0; } setNumber(number,m){ ...原创 2020-01-19 11:19:06 · 128 阅读 · 0 评论 -
备忘录模式--其它设计模式
// 备忘类 class Memento{ constructor(content){ this.content=content; } getContent(){ return this.content; } } // 备忘列表 class CareTaker{ constructor(){ this.list=[]; } add(memonto){ this....原创 2020-01-18 17:53:39 · 171 阅读 · 0 评论 -
命令模式--其它设计模式
// 接收者 class Receiver{ exec(){ console.log('执行'); } } // 命名者 class Command{ constructor(receiver){ this.receiver=receiver; } cmd(){ console.log('执行命令'); this.receiver.exec(); } } //...原创 2020-01-18 17:35:55 · 175 阅读 · 0 评论 -
模板方法模式和职责链模式--其它设计模式
职责链模式 class Action{ constructor(name){ this.name=name; this.nextAction=null; } setNextAction(action){ this.nextAction=action; } handle(){ console.log(this.name+'审批'); if(this.nextAc...原创 2020-01-18 16:59:29 · 257 阅读 · 0 评论 -
策略模式--其它设计模式
class OrdinaryUser{ buy(){ console.log('普通用户购买') } }; class MemberUser{ buy(){ console.log('会员用户购买') } }; class VipUser{ buy(){ console.log('VIP用户购买') } } const u1=new OrdinaryUser(); c...原创 2020-01-18 16:57:51 · 206 阅读 · 0 评论 -
享元模式--其它设计模式
原创 2020-01-18 16:46:01 · 125 阅读 · 0 评论 -
组合模式--其它设计模式
原创 2020-01-18 16:41:04 · 164 阅读 · 0 评论 -
桥接模式--其它设计模式
class Color{ constructor(name){ this.name=name; } }; class Shape{ constructor(name,color){ this.name=name; this.color=color; } draw(){ console....原创 2020-01-18 16:31:34 · 121 阅读 · 0 评论 -
原型模式--其它设计模式
原创 2020-01-18 16:16:36 · 119 阅读 · 0 评论 -
迭代器模式
const arr=[1,2,3,4]; const node_list=document.getElementsByName('p'); const $a=$('p'); /*三种数据结构,需要三种迭代写法*/ arr.forEach(function(item){ console.log(item); }) for(let i=0;i<node_list.length;i...原创 2020-01-10 18:45:43 · 109 阅读 · 0 评论 -
观察者模式
//要保存的主题 class Subject{ constructor(){ this.state=0; this.observers=[]; } getState(){ return this.state; } setState(state){ this.state=state; this.notifyAllObservers(); } notifyA...原创 2020-01-08 12:51:20 · 131 阅读 · 0 评论 -
外观模式
去医院,有接待员统一挂号,划价,收费 通过一个接口,封装两个子接口,这就是外观模式的一中体现 适度使用,要考虑接口独立原则,不可滥用 ...原创 2020-01-07 17:32:04 · 185 阅读 · 1 评论 -
适配器模式,装饰器模式和代理模式比较
原创 2020-01-07 16:53:52 · 262 阅读 · 0 评论 -
代理模式
class ReadImg{ //被代理类 constructor(filename){ this.filename=filename; this.loadFromDisk(); } loadFromDisk(){ console.log('loading...'+this.filename) } display(){ console.log('display....原创 2020-01-07 16:19:49 · 133 阅读 · 0 评论 -
装饰器模式-打印日志-提示API废弃信息
为对象添加功能,不改变其原有的结构和功能 ,类似手机壳,手机功能还是正常使用,但是加了手机壳,可以防滑,美观 class Circle{ draw(){ console.log('画图') } } class Decorator{ constructor(circle){ this.circle=circle; } draw(){ this.circle.draw(...原创 2020-01-06 12:58:19 · 207 阅读 · 0 评论 -
适配器模式
旧接口格式和使用者不兼容,中间加一个适配器转换接口 class Adaptee{ specificRequest(){ return '德国标准电压' } } class Target{ /*适配器类*/ constructor(){ this.adaptee=new Adaptee(); } request(){ const info=thi...原创 2020-01-04 13:12:10 · 88 阅读 · 0 评论 -
单例模式
系统中被唯一使用,一个类只有一个实例 示例:登录框,购物车,jq中只有一个$ class SingleObject{ login(){ console.log('login') } } SingleObject.getInstance=(function(){ /*类上的静态方法,只实例化一次,把实例放在类上面*/ let instance=null; if(!instance...原创 2020-01-03 12:45:25 · 131 阅读 · 0 评论 -
工厂模式
通过工厂Creator生成实例,避免构造函数名的更改造成影响,隔离开构造函数,统一创建实例的入口; 使用场景: 1. Array.prototype.slice.call(document.querySelectorAll('a'), 0)的作用就是将一个DOM NodeList 转换成一个数组。 class jQuery{ constructor(selecto...原创 2020-01-02 12:46:17 · 278 阅读 · 1 评论 -
状态模式
状态变化如果非常多的话,不能一直用if...else判断,每次状态触发都触发一个逻辑,保存最新的状态; Light类,有color属性和handle方法; class Light{ constructor(color){ this.color=color; } handle(state){ console.log(`turn to ${t...原创 2019-12-30 10:26:27 · 122 阅读 · 0 评论 -
设计模式的分类
创建型模式: 创建型模式,就是创建对象的模式,抽象了实例化的过程。 它帮助一个系统独立于如何创建、组合和表示它的那些对象。 关注的是对象的创建,创建型模式将创建对象的过程进行了抽象,也可以理解为将创建对象的过程进行了封装,作为客户程序仅仅需要去使用对象,而不再关心创建对象过程中的逻辑 创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 行为型模式: 行为型模式...转载 2019-12-28 12:04:19 · 88 阅读 · 0 评论 -
solid五大设计原则
S单一职责原则: 如果一个类承担的职责过多,就等于把这些职责耦合在一起了。一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力。这种耦合会导致脆弱的设计,当发生变化时,设计会遭受到意想不到的破坏。而如果想要避免这种现象的发生,就要尽可能的遵守单一职责原则。此原则的核心就是解耦和增强内聚性。 T负责两个不同的职责:职责P1,职责P2。当由于职责P1需求发生改...原创 2019-12-25 17:07:44 · 1505 阅读 · 0 评论 -
面向对象-多态
父类 子类 多态:父类虽然抽离了统一的方法,减少了代码的冗余,但是如果子类还是可以做一些特殊处理,保持了代码的灵活性原创 2019-12-18 13:23:11 · 89 阅读 · 0 评论 -
面对对象-封装
定义对象的属性,设置权限可以用项目的关键字(es6目前没有,其它语言有): 下面是typescript的示例:http://www.typescriptlang.org/play/ 该网站可以测试typescript的demo ...原创 2019-12-18 12:46:13 · 116 阅读 · 0 评论