博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
单例模式(Java)
阅读量:5094 次
发布时间:2019-06-13

本文共 1204 字,大约阅读时间需要 4 分钟。

 

//单例模式public class Singleton {    private static Singleton s;        private  Singleton(){            }        public static Singleton getSingleton(){        if(s ==null){            s=new Singleton();        }        return s;    }                      //测试    public static void main(String[] args){        Singleton s=Singleton.getSingleton();        Singleton s2=Singleton.getSingleton();        System.out.println(s==s2);    }}

(至于单例模式的优缺点我就直接copy啦!)

单例模式作为一种目标明确、结构简单、理解容易的设计模式,在软件开发中使用频率相当高,在很多应用软件和框架中都得以广泛应用。

1.主要优点

单例模式的主要优点如下:

(1) 单例模式提供了对唯一实例的受控访问。因为单例类封装了它的唯一实例,所以它可以严格控制客户怎样以及何时访问它。

(2) 由于在系统内存中只存在一个对象,因此可以节约系统资源,对于一些需要频繁创建和销毁的对象单例模式无疑可以提高系统的性能。

(3) 允许可变数目的实例。基于单例模式我们可以进行扩展,使用与单例控制相似的方法来获得指定个数的对象实例,既节省系统资源,又解决了单例单例对象共享过多有损性能的问题。

2.主要缺点

单例模式的主要缺点如下:

(1) 由于单例模式中没有抽象层,因此单例类的扩展有很大的困难。

(2) 单例类的职责过重,在一定程度上违背了“单一职责原则”。因为单例类既充当了工厂角色,提供了工厂方法,同时又充当了产品角色,包含一些业务方法,将产品的创建和产品的本身的功能融合到一起。

(3) 现在很多面向对象语言(如Java、C#)的运行环境都提供了自动垃圾回收的技术,因此,如果实例化的共享对象长时间不被利用,系统会认为它是垃圾,会自动销毁并回收资源,下次利用时又将重新实例化,这将导致共享的单例对象状态的丢失。

3.适用场景

在以下情况下可以考虑使用单例模式:

(1) 系统只需要一个实例对象,如系统要求提供一个唯一的序列号生成器或资源管理器,或者需要考虑资源消耗太大而只允许创建一个对象。

(2) 客户调用类的单个实例只允许使用一个公共访问点,除了该公共访问点,不能通过其他途径访问该实例。

转载于:https://www.cnblogs.com/shelly0307/p/3965286.html

你可能感兴趣的文章
[转]【EL表达式】11个内置对象(用的少) & EL执行表达式
查看>>
【jsp】案例:显示商品列表 & 问题:List内添加元素,为什么值都变成一样的了...
查看>>
ArrayList对象声明& arrayList.size()
查看>>
并发编程 线程
查看>>
Mysql 解压安装
查看>>
Mysql
查看>>
前端html
查看>>
网络编程
查看>>
java成神之——HttpURLConnection访问api
查看>>
沙坪坝区高等教育自学考试考点地址及乘车线路(参考)- 自考
查看>>
ubuntu,kali linux和windows三系统流水账——写给自己
查看>>
web数据交互方式
查看>>
json解包与json封包
查看>>
open method
查看>>
[机器学习实战] 使用ID3算法的决策树
查看>>
hadoop2.2.0部署
查看>>
母函数详解
查看>>
static关键字(pass)
查看>>
Leetcode 200. 岛屿的个数(扩展)
查看>>
LabVIEW介绍
查看>>