工厂模式:不用知道对象具体的创建流程,只需要提供给工厂所需要的生产信息就可以拿到所需要的对象。
抽象工厂模式:有多个工厂的时候,又需要对工厂多做一层抽象
单例模式:使一个类在堆中只产生一个对象
原型模式:通过克隆的方法来获得一个新的对象,减少new对象过程中的开销。
建造者模式:和工厂模式有点像相似,建造者模式的粒度比工厂模式要小,建造者设计到组件的具体组合过程,不同的组合产生不同的对象(其中组件和相同的,最终的组合出来的产品不同,类似乐高积木这样吧),Director类的作用是啥?(多一层抽象,解耦?)
适配器模式:适配器类实现原接口,引用第三方要适配的类
桥接器模式:暂时理解不了???
过滤器模式:没什么特别,就是多增加一个过滤器类,通过一个过滤的方法出去不合适的数据。
组合模式:类中的属性包含一个对自身类型引用的属性,例如一个员工类(Employee)中包含一个下属(subEmployees)的属性,类型为List<Employee> subEmployees,如下
public class Employee{
List<Employee> subEmployees;
}
装饰器模式:没有通过继承的方式,而是通过引用需要增强的类来实现功能的扩展,非常常见的一种模式。
外观模式(门面模式):整合出一个门面类,通过对门面类的操作来简化对系统的访问,例如Java的三层开发(Controller,Service,Dao)。
享元模式:避免大量的重复对象的创建,对象存储在一个集合内,做一个唯一的标记,如果二次调用直接从集合中获取即可, 避免创建重复的对象,造成内存浪费。)=应用有:String,数据库的数据池(待考究)。(有线程不安全的问题,内部状态和外部状态的分离指的是?)
代理模式:新增一个代理类,对目标类的访问变成对代理类的访问。
1、和适配器模式的区别:适配器模式主要改变所考虑对象的接口,而代理模式不能改变所代理类的接口。 2、和装饰器模式的区别:装饰器模式为了增强功能,而代理模式是为了加以控制。
责任链模式:多个对象做成一条链,对一个请求做处理(请求沿着责任链传递),解除了请求对象和处理对象的耦合。
命令模式:不是很了解
解释器模式:用得比较少
迭代器模式:提供迭代器来遍历一个聚合对象(指的是Map,Set,List这些),而不是直接通过聚合对象本身操作。
中介者模式:还没理解(???)。
备忘录模式:对修改前做备份处理,以便恢复(回滚);
观察者模式:被观察者状态发生变化是,通知观察者做相应的处理。关键点:被观察者类里面有一个List观察者。
状态模式:上下文(context)根据状态(state)的不同而做不同的动作,参考文档所写的代码不太恰当,应该是给context设置不同的状态,而不是在doAction里面对context做修改?待考究
空对象模型:用一个空对象来代替null对象。
策略模式:就是目前理解的状态模式,和状态模式的区别??状态模式理解错误?
模板模式:将一些通用的算法找整合出一个模板,具体细节的实现延迟到子类。
访问者模式:没理解???
MVC模式:开发常用的模式
业务代表模型:也是对多种业务的抽象整合出来的一个业务代表类,通过访问业务代表类访问业务。
设计模式往往是:做新一层的抽象,解除耦合,要么就是一些设计技巧(例如单利模式,模板模式),要理解面向接口编程的思想
组合实体模式:
数据访问对象模式:常用的开发模式
前端控制器模式:
拦截过滤器模式:
服务器定位模式:
传输对象模式:
参考链接:
http://www.runoob.com/design-pattern/state-pattern.html