Skip to content

Draymond-TS/DesignPattern

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

设计模式

一、分类

  • 创建型模式:
    • 单例模式、工厂模式、抽象工厂模式、建造者模式、原型模式
  • 结构性模式:
    • 适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模 式
  • 行为型模式:
    • 模版方法模式、命令模式、迭代器模式、观察者模式、中介者模式、备忘录模 式、解释器模式、状态模式、策略模式、职责链模式、访问者模式

二、创建模式详解

一、单例模式

  • 核心作用:保证一个类只有一个实例,并且提供一个访问该实例的全局访问点。
  • 应用场景:
    • 在spring MVC框架/struts1框架中,控制器对象也是单例
    • 在Spring中,每个Bean默认就是单例的,这样做的优点是Spring容器可以管理
    • 项目中,读取配置文件的类,一般也只有一个对象。没有必要每次使用配置文件数据,每次new一个对象去读取。
    • 数据库连接池的设计一般也是采用单例模式,因为数据库连接是一种数据库资源。 – 操作系统的文件系统,也是大的单例模式实现的具体例子,一个操作系统只能有一个文
    • 实现方式:饿汉式、懒汉式、双重检测锁式、静态内部类式、枚举单例

二、工厂模式

  • 核心作用:
    • 实例化对象,用工厂方法代替new操作
    • 将选择实现类、创建对象统一管理和控制。从而将调用者跟我们的实 现类解耦。
  • 应用场景
    • JDK中Calendar的getInstance方法
    • JDBC中Connection对象的获取
    • Hibernate中SessionFactory创建Session
    • spring中IOC容器创建管理bean对象
    • XML解析时的DocumentBuilderFactory创建解析器对象
    • 反射中Class对象的newInstance()
  • 实现方式:
    • 简单工厂模式
    • 工厂方法模式
    • 抽象工厂模式
  • "工厂方法模式"VS"抽象工厂模式"
    • 抽象工厂模式是工厂方法模式的泛化版,工厂方法模式是一种特殊的抽象工厂方法
    • 从产品等级结构和产品族角度来说,产品等级结构相同,但工厂方法模式的产品族为一个,而抽象工厂模式是多个

三、建造者模式

  • 核心作用:
    • 它可以将复杂对象的建造过程抽象出来(抽象类别),使这个抽象过程的不同实现方法可以构造出不同表现(属性)的对象。
  • 应用场景
    • StringBuilder类的append方法
    • SQL中的PreparedStatement
    • JDOM中,DomBuilder、SAXBuilder
  • "抽象工厂模式"VS"建造者模式"
    • 抽象工厂模式实现对产品家族的创建,一个产品家族是这样的一系列产品:具有不同分类维度的产品组合,采用抽象工厂模式不需要关心构建过程,只关心什么产品由什么工厂生产即可。而建造者模式则是要求按照指定的蓝图建造产品,它的主要目的是通过组装零配件而产生一个新产品。

四、适配器模式

  • 核心作用:
    • 将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原 本由于接口不兼容而不能一起工作的那些类可以在一起工作。
  • 应用场景:
    • 系统需要使用一些现有的类,而这些类的接口(如方法名)不符合系统的需要,甚至没有这些类的源代码。
    • 想创建一个可以重复使用的类,用于与一些彼此之间没有太大关联的一些类,包括一些可能在将来引进的类一起工作。
  • 实现方式:
    • 类的适配器模式
    • 对象的适配器模式
    • 接口的适配器模式

五、装饰模式

  • 核心作用:
    • 动态地给一个对象添加额外的功能,比继承灵活
  • 应用场景:
    • IO中输入流和输出流的设计
    • Swing包中图形界面构件功能
    • Servlet API 中提供了一个request对象的Decorator设计模式的默认实 现类HttpServletRequestWrapper,HttpServletRequestWrapper 类,增强了request对象的功能。
    • Struts2中,request,response,session对象的处理

六、代理模式

  • 核心作用:
    • 通过代理,控制对对象的访问! 可以详细控制访问某个(某类)对象的方法,在调用这个方法前做前置处理,调用这个方法后 做后置处理。
  • 应用场景:
    • JDK动态代理
    • CGLIB动态代理
    • Spring的AOP

七、策略模式

  • 核心作用:
    • 分离算法,选择实现。
  • 应用场景:
    • JAVASE中GUI编程中,布局管理
    • Spring框架中,Resource接口,资源访问策略
    • javax.servlet.http.HttpServlet#service()

八、观察者模式

  • 核心作用:
    • 主要用于1:N的通知。当一个对象(目标对象Subject或Objservable)的状态变化时,他需要及时通知一系列对象(观察者对象,Observe),令他们做出响应
  • 应用场景:
    • 京东商城中,群发某商品打折信息
    • Servlet中,监听器的实现
    • 邮件订阅

About

study Design Pattern

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages