设计模式在项目中的应用


简单工厂设计模式在项目中应用

项目使用场景:根据不同的厂家,有不同的报表打印形式,而对于报表的打印他们有公共的部分,打印报表头、打印底部、和打印中间部分。

我们可以使用简单工厂模式,抽象出打印报表的接口,不同的厂家实现不同的打印接口。

单例模式在项目中应用

场景1:在DOM读取配置文件的时候,因为经常被用到这个类,我们可以设置一个全局类,不用每次都new那么多的类,节省资源消耗。

场景2:在spring的IOC依赖注入的时候,默认的是采用单例模式,例如controller层中一个类通过注入方式使用service层的一个类,而service这个类是全局变量,spring就是通过单例模式来实现的,当然我们可以通过配置spring的springMVC.xml文件来修改(prototype)。

单例模式作用:保证一个类仅有一个实例,并提供一个访问它的全局访问点。

如下图所示:

/** 
 * @ClassName: Singleton_Simple 
 * @Description: 单例模式——饿汉模式 
 * @author summer 
 * @date 2015-7-14 
 * 
 */ 
public class Singleton_Simple { 
     
    private static final Singleton_Simple simple = new Singleton_Simple(); 
     
    private Singleton_Simple(){} 
     
    public static Singleton_Simple getInstance(){ 
        return simple; 
    } 
 
}

当然对于读取配置文件这个类我们可以作为静态类来写,那为什么还要使用单例模式呢?spring工厂中创建的bean为singleton模式和prototype格式,为什么没有使用静态类的形式?或者可以选择非静态类的静态方法?

1、静态类是在JVM加载的时候就占用内存的,而单例模式,可以在使用的时候再进行加载。也就是单例可以延迟初始化。

2、单例可以继承类,可以实现接口,而静态类不能。

3、单例类可以被集成,他的方法可以被覆写。

4、单例类可以被用来多台。

5、而针对非静态类的静态方法,如果一个类不需要扩展的话可以用这样的方式,用单例也可以,但是需要扩展的类,最好是使用单例。

代理模式在项目中的应用

应用场景:spring AOP的核心就是代理,通过代理模式的实现来实现解耦。

代理模式(proxy):为其他对象提供一种代理以控制对这个对象的访问。

JDK代理模式如下所示:

设计模式在项目中的应用

外观模式在项目中的应用

应用场景:在界面和业务逻辑层中抽取出一层,controller层调用facade层,facade层调用service层。

外观模式(facade):为子系统中一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。

本文永久更新链接地址

相关内容