
设计模式
aliven1
前端工程师,技术栈:PS、AI、H5、CSS3、JS、TS、jQuery、vue、react、微信小程序、node、express、svn、git、webpack
展开
-
java中的工厂模式
工厂模式的概念1.简单的工厂模式专门有创建指定实例的类,返回对应的类实例,不用自己使用new创建类,实现创建实例和调用实例的分离。弊端是如果有新的类,需要修改工厂类,违反了开放封闭原则...原创 2022-02-16 15:31:14 · 177 阅读 · 0 评论 -
java单例模式的实现(饿汉式vs懒汉式,数据库连接池)
饿汉式实现懒汉式实现饿汉式和懒汉式的区别单例的使用单例模式的应用场景数据库连接池:数据库连接池是单例,控制连接数等信息,不够再扩容原创 2022-02-11 18:25:49 · 881 阅读 · 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 · 148 阅读 · 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 · 186 阅读 · 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 · 193 阅读 · 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 · 285 阅读 · 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 · 224 阅读 · 0 评论 -
享元模式--其它设计模式
原创 2020-01-18 16:46:01 · 138 阅读 · 0 评论 -
组合模式--其它设计模式
原创 2020-01-18 16:41:04 · 181 阅读 · 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 · 137 阅读 · 0 评论 -
原型模式--其它设计模式
原创 2020-01-18 16:16:36 · 132 阅读 · 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 · 122 阅读 · 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 · 145 阅读 · 0 评论 -
外观模式
去医院,有接待员统一挂号,划价,收费通过一个接口,封装两个子接口,这就是外观模式的一中体现适度使用,要考虑接口独立原则,不可滥用...原创 2020-01-07 17:32:04 · 201 阅读 · 1 评论 -
适配器模式,装饰器模式和代理模式比较
原创 2020-01-07 16:53:52 · 283 阅读 · 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 · 160 阅读 · 0 评论 -
装饰器模式-打印日志-提示API废弃信息
为对象添加功能,不改变其原有的结构和功能,类似手机壳,手机功能还是正常使用,但是加了手机壳,可以防滑,美观class Circle{ draw(){ console.log('画图') }}class Decorator{ constructor(circle){ this.circle=circle; } draw(){ this.circle.draw(...原创 2020-01-06 12:58:19 · 223 阅读 · 0 评论 -
适配器模式
旧接口格式和使用者不兼容,中间加一个适配器转换接口 class Adaptee{ specificRequest(){ return '德国标准电压' }}class Target{ /*适配器类*/ constructor(){ this.adaptee=new Adaptee(); } request(){ const info=thi...原创 2020-01-04 13:12:10 · 102 阅读 · 0 评论 -
单例模式
系统中被唯一使用,一个类只有一个实例示例:登录框,购物车,jq中只有一个$class SingleObject{ login(){ console.log('login') }}SingleObject.getInstance=(function(){ /*类上的静态方法,只实例化一次,把实例放在类上面*/ let instance=null; if(!instance...原创 2020-01-03 12:45:25 · 154 阅读 · 0 评论 -
工厂模式
通过工厂Creator生成实例,避免构造函数名的更改造成影响,隔离开构造函数,统一创建实例的入口;使用场景:1. Array.prototype.slice.call(document.querySelectorAll('a'), 0)的作用就是将一个DOM NodeList 转换成一个数组。class jQuery{ constructor(selecto...原创 2020-01-02 12:46:17 · 312 阅读 · 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 · 138 阅读 · 0 评论 -
设计模式的分类
创建型模式:创建型模式,就是创建对象的模式,抽象了实例化的过程。它帮助一个系统独立于如何创建、组合和表示它的那些对象。关注的是对象的创建,创建型模式将创建对象的过程进行了抽象,也可以理解为将创建对象的过程进行了封装,作为客户程序仅仅需要去使用对象,而不再关心创建对象过程中的逻辑创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。行为型模式:行为型模式...转载 2019-12-28 12:04:19 · 105 阅读 · 0 评论 -
solid五大设计原则
S单一职责原则: 如果一个类承担的职责过多,就等于把这些职责耦合在一起了。一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力。这种耦合会导致脆弱的设计,当发生变化时,设计会遭受到意想不到的破坏。而如果想要避免这种现象的发生,就要尽可能的遵守单一职责原则。此原则的核心就是解耦和增强内聚性。 T负责两个不同的职责:职责P1,职责P2。当由于职责P1需求发生改...原创 2019-12-25 17:07:44 · 1544 阅读 · 0 评论 -
面向对象-多态
父类子类多态:父类虽然抽离了统一的方法,减少了代码的冗余,但是如果子类还是可以做一些特殊处理,保持了代码的灵活性原创 2019-12-18 13:23:11 · 102 阅读 · 0 评论 -
面对对象-封装
定义对象的属性,设置权限可以用项目的关键字(es6目前没有,其它语言有):下面是typescript的示例:http://www.typescriptlang.org/play/ 该网站可以测试typescript的demo...原创 2019-12-18 12:46:13 · 130 阅读 · 0 评论