下面记录下自己用到的几个简单设计模式
一.工厂模式
目的:定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。
使用场景:1.日志记录器,记录可能记录到本地硬盘、系统事件、远程服务器等,用户可以选择记录日志到什么地方
2.数据库的访问,当用户不知道最后系统采用哪一类数据库,以及数据库可能有变化时
3.设计一个连接服务器的框架,需要单个协议,POP3 IMAP HTTP,可以把三个座位产品类,共同实现一个接口
二:抽象工程模式
目的:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。
使用场景:1.QQ换皮肤,一整套一起换 2.生成不同操作系统的程序
三:单例模式
目的:保证一个类仅有一个实例,并提供一个访问它的全局访问点。
使用场景:1.Windows时多进程多线程的,在操作一个文件时,就不可避免地出现多个进程或线程同实操作一个文件的现象,所有文件的处理必须通过唯一的实例来进行。
2.一些设备管理器常常设计为单例模式,比如一个电脑有两题打印机,输出的时,不能两台打印机打印同一个文件
四:建造者模式
目的:将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示
实例:JAVA 中 StringBuilder
五:适配器模式
目的:将一个类的接口转换为客户希望的另一个接口。适配器模式使得原本由于接口不兼容而不能在一起工作的那些类可以在一起工作
实例:JAVA中的jdbc
六:代理模式
目的:为其他对象提供一种代理以控制对这个对象的访问
实例:spring aop
七:责任链模式
目的:避免请求发送者与接受者耦合在一起,让多个对象都有可能接受请求,将这些对象连接成一条链,并且沿着这条链传递请求,知道有对象处理它为止。
实例:JAVA WEB中 Apache Tomcat 对 Encoding 的处理; Struts2的拦截器,jsp servlet 的Filter