永发信息网

什么是单例模式,将一个类设计成单例设计模式,需要哪些步骤

答案:1  悬赏:40  手机版
解决时间 2021-04-15 17:11
什么是单例模式,将一个类设计成单例设计模式,需要哪些步骤
最佳答案
单例模式(Singleton Pattern)是一个比较简单的模式。定义:
确保某一个类只有一个实例,而且自动实例化并向整个系统提供这个实例。通用类图:
通用代码:
Singleton类称为单例类,通过使用private的构造函数确保了在一个应用中只产生一个实例,并且是自行实例化的。

public class Singleton {private static final Singleton singleton = new Singleton();// 限制产生多个对象
private Singleton() {
}// 通过该方法获得实例对象
public static Singleton getSingleton() {
return singleton;
}// 类中其他方法尽量是static
public static void doSomething() {}
}
单例模式的优点:
由于单例模式在内存中只有一个实例,减少了内存开支,特别是一个对象需要频繁地创建、销毁时,而且创建或销毁时性能又无法优化,单例模式的优势就非常明显了。
由于单例模式只生成一个实例,所以减少了系统的性能开销,当一个对象的产生需要比较多的资源时,如读取配置、产生其他依赖对象时,则可以通过在应用启动时直接产生一个单例对象,然后用永久驻留内存的方式来解决。
单例模式可以避免对资源的多重占用,例如一个写文件动作,由于只有一个实例存在内存中,避免对同一个资源文件的同时写操作。
单例模式可以在系统设置全局的访问点,优化和共享资源访问,例如可以设计一个单例类,负责所有数据表的映射处理。单例模式的缺点:
单例模式一般没有接口,扩展很困难,若要扩展,除了修改代码基本上没有第二种途径可以实现。
单例模式对测试是不利的。在并行开发环境中,如果单例模式没有完成,是不能进行测试的,没有接口也不能用mock的方式虚拟一个对象。
单例模式与单一职责原则有冲突。一个类应该只实现一个逻辑,而不关心它是否是单例的,是不是要单例取决于环境,单例模式把“要单例”和业务逻辑融合在一个类中。单例模式的使用场景:
要求生成唯一序列号的环境;
在整个项目中需要一个共享访问点或共享数据,例如一个Web页面上的计数器,可以不用把每次刷新都记录到数据库中,使用单例模式保持计数器的值,并确保是线程安全的;
创建一个对象需要消耗的资源过多,如要访问IO和数据库等资源;
需要定义大量的静态常量和静态方法(如工具类)的环境,可以采用单例模式(当然,也可以直接声明为static的方式)。单例模式的注意事项:
1. 在高并发情况下,请注意单例模式的线程同步问题。

public class Singleton2 {private static Singleton2 singleton = null;// 限制产生多个对象
private Singleton2() {
}......余下全文>>
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
如何保持脸上不长痘痘?
想达到魅力8红人要多少个Q币
洛阳诺基亚5530,5320,N78多少钱
正在找工作的男人25岁生日应该送什么好?
为什么我家电脑没有地址栏?
怎样理解诗词歌赋中的景物描写?为什么自己总
月薪五万能买个什么样的车
不动电脑多久QQ会显示离开
德橙火锅南部店地址有知道的么?有点事想过去
价钱马爹利XO市场假大概在多少
就大体而言 用英语怎么说,有多少种说法?
长安物贵,居大不易。是什么意思?
金花松鼠冬眠了怎么办,松鼠是怎样冬眠的
果仁园食品怎么去啊,有知道地址的么
彩虹岛的问题。
推荐资讯
QQ三国的二价元神升价石去哪里拿的?
请问飞利浦耳机SHE9550和SHE9500这两款比那个
皇室眼镜公司地址在哪,我要去那里办事
昂达785蓝迪板用什么显卡影驰9800GT中将合适
苹果6splus耳机没有声音怎么回事
我不是骑士我不能高飞 翻译成英文 歌曲中的歌
雷家滩四小区地址在什么地方,想过去办事
广西的面积大还是广东的面积大?广东的历史长
哪一届亚洲MTV颁奖典礼开场很摇滚的?
学生书包怎么选
食尚小吃我想知道这个在什么地方
空间歌名询问
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?