单例模式的应⽤场景及优缺点
我和我们在一起剧情介绍概述:单例(Singleton)模式要求⼀个类有且仅有⼀个实例,并且提供了⼀个全局的访问点。这就提出了⼀个问题:如何绕过常规的构造器,提供⼀种机制来保证⼀个类只有⼀个实例?客户程序在调⽤某⼀个类时,它是不会考虑这个类是否只能有⼀个实例等问题的,所以,这应该是类设计者的责任,⽽不是类使⽤者的责任。从另⼀个⾓度来说,Singleton模式其实也是⼀种职责型模式。因为我们创建了⼀个对象,这个对象扮演了独⼀⽆⼆的⾓⾊,在这个单独的对象实例中,它集中了它所属类的所有权⼒,同时它也肩负了⾏使这种权⼒的职责!
核⼼作⽤:保证⼀个类只有⼀个实例,并且提供⼀个访问该实例的全局访问点
应该在什么时候下使⽤单例模式?
楼宇智能化工程技术专业举⼀个⼩例⼦,在我们的windows桌⾯上,我们打开了⼀个回收站,当我们试图再次打开⼀个新的回收站时,Windows系统并不会为你弹出⼀个新的回收站窗⼝。,也就是说在整个系统运⾏的过程中,系统只维护⼀个回收站的实例。这就是⼀个典型的单例模式运⽤。
继续说回收站,我们在实际使⽤中并不存在需要同时打开两个回收站窗⼝的必要性。假如我每次创建回收站时都需要消耗⼤量的资源,⽽每个回收站之间资源是共享的,那么在没有必要多次重复创建该实例的情况下,创建了多个实例,这样做就会给系统造成不必要的负担,造成资源浪费。
再举⼀个例⼦,⽹站的计数器,⼀般也是采⽤单例模式实现,如果你存在多个计数器,每⼀个⽤户的访问都刷新计数器的值,这样的话你的实计数的值是难以同步的。但是如果采⽤单例模式实现就不会存在这样的问题,⽽且还可以避免线程安全问题。同样多线程的线程池的设计⼀般也是采⽤单例模式,这是由于线程池需要⽅便对池中的线程进⾏控制
国际商务专业去皱化妆品同样,对于⼀些应⽤程序的⽇志应⽤,或者web开发中读取配置⽂件都适合使⽤单例模式,如HttpApplication 就是单例的典型应⽤。电压力锅和高压锅
从上述的例⼦中我们可以总结出适合使⽤单例模式的场景和优缺点:
适⽤场景: 1.需要⽣成唯⼀序列的环境
2.需要频繁实例化然后销毁的对象。
3.创建对象时耗时过多或者耗资源过多,但⼜经常⽤到的对象。
4.⽅便资源相互通信的环境
优点:1.实现了对唯⼀实例访问的可控
2.对于⼀些需要频繁创建和销毁的对象来说可以提⾼系统的性能。
缺点:1. 不适⽤于变化频繁的对象 2.滥⽤单例将带来⼀些负⾯问题,如为了节省资源将数据库连接池对象设计为的单例类,可能会导致共享连接池对象的程序过多⽽出现连接池溢出。
3.如果实例化的对象长时间不被利⽤,系统会认为该对象是垃圾⽽被回收,这可能会导致对象状态的丢失。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论