单例模式(Singleton Pattern): 定义:保证一个类仅有一个实例,并提供一个访问它的全局访问点. 目的:阻止其他对象实例化其自己的单例对象的副本,从而确保所有对象都访问唯一实例. 场景:如一个系统中可以存在多个打印任务,但是同时只能有一个正在工作的任务. 例:JS代码实现 // 惰性单例 let lazySingle = (() => { let _instance = null // 单例 Single = () => { let privateAttribute = '我是私…
装饰模式(Decorator Pattern): 定义:在不改变原对象的情况下,动态的给对象添加一些额外的职责.就功能而言,装饰模式相比生成子类更为灵活. 目的:把类的核心职责和装饰功能区分开.可以去除相关类中重复的逻辑. 场景:当系统需要扩展一个类的功能,或者客户端需要动态的给一个对象添加功能,并且使用继承或生成子类会很复杂的时候. 装饰模式体现了"多用组合,少用继承"这一设计原则. 例:JS代码实现 // 一辆小汽车 的构造函数 function ACar () { // 一辆原味…
策略模式(Strategy Pattern): 定义:定义了一族算法: 封装了每个算法: 这族的算法可互换代替. 目的:将算法的使用与算法的实现分离开来. 场景:可用来消除大量的条件分支语句. 例:JS代码实现 // 策略算法封装 let strategy = { add (number1, number2) { return number1 + number2 }, sub (number1, number2) { return number1 - number2 }, mul (number…
一.中介者模式的定义和应用场景 中介者模式的作用在于解除对象之间的紧耦合关系,增加一个中介者之后,所有对象都通过中介者来通信,而不是互相引用,当一个对象发生变化的时候,仅需要通知中介者即可.从而将网状的多对多关系转换为了简单的一对多关系. 中介者模式使得各个对象之间得以解耦,以中介者和对象之间一对多的关系取代了多个对象之间多对多的关系,其缺点在于将对象之间的复杂性转移到了中介者对象的复杂性,系统增加的这个中介者对象往往是复杂和难以维护的,往往当对象之间的耦合度呈指数增长的时候,就需要考虑引入中介…
工厂模式(Factory Pattern): 定义:定义一个创建对象的接口,但让实现这个接口的类来决定实例化哪个类.工厂方法让类的实例化推迟到子类中进行. 目的:工厂模式是为了解耦,把对象的创建和使用的过程分开.场景:需要生成复杂对象,需要降低耦合度的场景. 例子:JS代码实现  let operationFactory = { createOperate (operate) { let oper = null switch (operate) { case '+': oper = new op…
Java 设计模式系列(十四)命令模式(Command) 命令模式把一个请求或者操作封装到一个对象中.命令模式允许系统使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能.命令模式属于对象的行为模式,又称为行动(Action)模式或交易(Transaction)模式. 一.命令模式的结构 命令模式是对命令的封装.命令模式把发出命令的责任和执行命令的责任分割开,委派给不同的对象. 每一个命令都是一个操作:请求的一方发出请求要求执行一个操作:接收的一方收到请求,并执…
转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/39856435 代理模式(Proxy):代理模式事实上就是多一个代理类出来,替原对象进行一些操作.比方咱有的时候打官司须要请律师,由于律师在法律方面有专长,能够替咱进行操作表达咱的想法,这就是代理的意思.代理模式分为两类:1.静态代理(不使用jdk里面的方法):2.动态代理(使用jdk里面的InvocationHandler和Proxy).以下请看演示样例: 一.静态代理 1.uml建模:…
一.享元模式的定义及使用场景 享元模式是为了解决性能问题而诞生的设计模式,这和大部分设计模式为了提高程序复用性的原因不太一样,如果系统中因为创建了大量类似对象而导致内存占用过高,享元模式就非常有用了. 享元模式的关键是区分内部状态和外部状态,剥离了外部状态的对象成为共享对象.有多少种内部状态的组合,系统中便最多存在多少个共享对象.而外部状态存在于共享对象的外部,在必要时被传入共享对象来组成一个完整的对象.一般情况下,以下情况发生时,可以使用享元模式: 1)一个程序使用了大量的类似对象: 2)由于…
一.状态模式的定义 状态模式的关键是区分事务内部和外部的状态,事务内部状态改变往往会带来事务的行为改变. 状态模式中有意思的一点是,一般我们谈到封装,都是优先封装对象的行为,而非对象的状态.但在状态模式中刚好相反,状态模式的关键是把事务的每种状态都封装为单独的类,跟此种状态有关的行为都封装在这个类的内部.与此同时,我们还可以把状态的切换规则实现分布在状态类中,这样就有效消除了原本存在的大量条件分支语句. 二.状态模式的应用案例——文件上传 在现实中,状态模式的应用案例有很多,如文件上传程序有文件…
javascript之表单对象 学习要点: 表单对象 文本框 按钮 单选框和复选框 一.表单对象 在HTML文档中可能会出现多个表单,也就是说,一个HTML文档中可能出现多个<form>标签.javascript会为每个<form>标签创建一个Form对象,并将这些Form对象存放在forms[]数组中. 属性或方法 说明 acceptCharset 服务器能够处理的字符集 action 接受请求的URL elements 表单中所有控件的集合 enctype 请求的编码类型 le…