单例模式

单例模式是指确保一个类只有一个实例,且自行实例化,并向整个系统,提供这个实例,供全局访问单例模式也为分饿汉和懒汉模式
两者区别如下

相同点:在类创建的时候就一句创建好了一个静态对象提供系统使用,并且以后都不在改变
不同点:饿汉模式线程是安全的,懒汉模式,在创建实例对象时不加上synchronzied会导致对象的访问不是线程安全的
单例优势
1.实例数量设置为一个,有利于节约内存空间
2.可为整个程序框架提供共享变量,最终提高代码的重用性
3.可减少java的程序的命名空间
应用时机1.当软件系统中多个程序只需要调用一个实例对象时
2.无需修改客户端程序,即可使用由子类进行扩展实例时
3.当系统的性能需要进一步优化时。

package model.singleton;

/**
 * 饿汉模式
 * @author 66
 *
 */
public class JackSingleton {
	
	//饿汉模式的意思就是系统一启动自动实例化,不是就挺饿的上来就给它丫的实例化喂饱它
	

	private  static final JackSingleton jackSingleton = new JackSingleton();
	
	//构造方法是私有的
	private  JackSingleton() {
			
	}

	public synchronized static JackSingleton getInstance(){
		return jackSingleton;
	}
}
package model.singleton;

/**
 * 懒汉模式
 */
public class JackSingletong {
	
	private  static JackSingletong jackSingletong = null;
	 
	private JackSingletong(){
		
	}
	
	//懒汉模式,说明比较懒要在用的时候才给别人创建实例
	synchronized static JackSingletong getInstans(){
		if(jackSingletong == null){
			jackSingletong =  new JackSingletong();
		}
		return jackSingletong;
	}
	
}

单例模式与Struts

     目前Struts主流框架它包括Struts1和Struts2.由于Struts2和Action对象又具备使所有请求均会产生对应的一个实例功能,因而我们理解为非单太模式。在struts1中的Action中实行的是线程安全的单例模式,其action只可拥有一个实例来处理相关的全部请求,并且Struts1具备使用所有模块均可拥有生命周期的功能.尤其要注意的是各个模块中的Action都需要共同分享同一个生命周期

    其实我们这么认为,Struts1的数据不可在Action中编制,所以其可实现单例模式,而Struts2的数据在Action中编制,因而其不能运用单例模式


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值