2021-04-09

首先,设计模式就是在大量的实践中总结和理论化之后优选的代码结构、编程风格、以及解决问题的思考方式

单例设计模式:
采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法.
如果我们要让类在一个虚拟机中只能产生一个对象,我们首先需要将类的构造器的访问权限设置为private.这样就不能在类的外部去new对象了,但在类的内部仍可以产生该类的对象.
这时只能调用该类的某个静态方法以返回类内部创建的对象
又因为静态方法只能访问类中的静态成员变量
所以指向类内部产生的该类对象的变量也必须定义成静态的

单例模式优点:减少了系统性能开销,当一个对象的产生需要比较多的资源时,如读取配置、产生其他依赖对象时,则可以通过在应用启动时直接产生一个单例对象,然后永久驻留内存的方式来解决.

又分为懒汉式和饿汉式:
代码示例:

//懒汉式:
class Person{
//	1.私有化类的内部构造器
	private Person() {
	}
//	2.声明类静态对象,没有初始化
	private static Person instance;
    private static ReentrantLock lock = new ReentrantLock();
	//3.声明public、static的返回当前类的方法
	public static Person getInstance() {
		
            if (instance == null) {
            try {
                lock.lock();
                if (instance == null) {
                    instance = new Bankinstance();
                }
            } finally {
                lock.unlock();
            }
        }
        return instance;

}
//饿汉式
class Bank{
//	1.私有化类的构造器
	private Bank() {
	}
	//2.内部创建类的静态对象
	private  static Bank instance = new Bank();
//	3.提供公共的静态方法,返回类的对象
	public static Bank getInstance() {
		return instance;
	}	
}

什么时候用什么时候造对象的是懒汉式
事先造好对象的是饿汉式

饿汉式与懒汉式的优缺:
饿汉式:
好处:天然就是线程安全的
坏处:对象加载时间过长.

懒汉式:
好处:延迟对象创建.
坏处:目前的写法,线程不安全.–>开发中需要注意线程安全问题
(多线程还没学到,学到的时候会回来修改o(╥﹏╥)o)

应用场景:
网站的计数器:一般也是单例模式实现,否则难以同步.
应用程序的日志应用: 这一般是由于共享的日志文件一直处于打开状态,因为只能有一个实例去操作,否则内容不好追加
数据库连接池:因为数据库连接是一种数据库的资源
读取配置文件的类
以及典型的单例模式应用:Application,任务管理器,回收站

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值