设计模式学习总结(1) 单例模式

本系列主要记录设计模式的意图是什么,它要解决一个什么问题,什么时候可以使用它;它是如何解决的,掌握它的结构图,记住它的关键代码;能够想到至少两个它的应用实例,一个生活中的,一个软件中的;这个模式的优缺点是什么,其有哪些使用场景,在使用时要注意什么。

尊重作者,转载请注明晔阳的Bloghttp://blog.csdn.net/hacke2


1.单例模式
意图:保证一个类仅有一个实例,并提供一个访问它的全局访问点
主要解决:一个全局使用的类频繁的创建于销毁
什么时候使用:当你想控制实例数目,节省系统资源的时候

如何解决 :判断系统是否是否已经有这个单例,如果有则返回,如果没有,则创建

结构图

设计模式学习总结(1) 单例模式_第1张图片

关键代码:构造函数式私有的

应用实例:1.一个党只能有一个主席.2.Windows是多进程多线程的,在操作一个文件的时候,就不可避免地出现多个进程或线程同时操作一个文件的现象,所以所有文件的处理必须通过唯一的实例来进行。3.一些设备管理器常常设计为单例模式,比如一个电脑有两台打印机,在输出的时候就要处理不能两台打印机打印同一个文件。

优点:1.在内存里只有一个实例,减少了内存的开销,尤其是频繁的创建和销毁实例(比如管理学院首页页面缓存) 2.避免对资源的多重占用(比如写文件操作)

缺点:没有接口,不能继承,与单一职责原则冲突,一个类应该只关心内部逻辑,儿不关心外面怎么样来实例化

使用场景:1.要求生产唯一序列号 2.WEB中的计数器,不用每次刷新都在数据库里加一次,用单例先缓存起来 3.创建的一个对象需要消耗的资源过多,比如I/O与数据库的连接等

注意事项:getInstance()方法中需要使用同步锁synchronized (Singleton.class)防止多线程同时进入造成instance被多次实例化

  


你可能感兴趣的:(单例,设计模式,学习总结)