模板方法模式
什么是模板方法模式
假如我们有一些平行的子类,各个子类之间有一些相同的行为,也有一些不同的行为。如果相同和不同的行为都混合在各个子类的实现中,说明这些相同的行为会在各个子类中重复出现。但实际上,相同的行为可以被搬到另外一个单一的地方,模板方法就是为解决这个问题而生的。
假如我们有一些平行的子类,各个子类之间有一些相同的行为,也有一些不同的行为。如果相同和不同的行为都混合在各个子类的实现中,说明这些相同的行为会在各个子类中重复出现。但实际上,相同的行为可以被搬到另外一个单一的地方,模板方法就是为解决这个问题而生的。
命令模式(Command Pattern)是一种数据驱动的设计模式,它属于行为型模式。请求以命令的形式包裹在对象中,并传给调用对象。
调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。
具体写法: 使用Map将话题和要执行的回调方法一一对应的存下来,即订阅。在发布这个话题时,使用发布的参数,执行这个话题的回调方法。
订阅前发布: 在发布某个话题时,如果这个话题尚未被订阅,那么将这个话题存储起来,等订阅之后,立即发布。那么,在写代码时,就不会发生发布在订阅之前,导致功能不能被触发的问题。
迭代器模式是指提供一种方法顺序访问一个聚合对象中的各个元素,而又不需要暴露该对象的内部表示。
内部迭代器在调用的时候非常方便,外界不用关心迭代器内部的实现,跟迭代器的交互也仅仅是一次初始调用,但这也刚好是内部迭代器的缺点。
代理模式是为一个对象提供一个代用品或占位符,以便控制对它的访问。
代理和本体接口保持一致,那么用户可以放心的请求代理,他只关心是否得到想要的结果;在任何使用本体的地方都可以替换成使用代理。
虚拟代理:例如实现图片预加载、合并http请求。
缓存代理:例如缓存ajax异步请求的数据,下次再打开同一页的时候,便可以直接使用之前的数据。
定义一系列的算法,把它们一个个封装起来,并且使它们可以互相替换。
一个基于策略模式的程序至少由两部分组成。第一个部分是一组策略类,策略类封装了具体的算法,并负责具体的计算过程。第二个部分是环境类context,context接受客户的请求,随后把请求委托给某一个策略类。
策略模式可以消除程序中大片的条件分支语句。
保证一个类仅有一个实例,并提供一个访问它的全局访问点。
推荐使用惰性单例的方式创建,即在需要时才创建单例对象。并且需要把不变的部分隔离出来,把管理单例的逻辑和创建对象的逻辑分开,这两个方法可以独立变化而不互相影响。当它们连接在一起时,就完成了创建唯一实例对象的功能。