首页 > 代码库 > 设计模式之禅-单例模式
设计模式之禅-单例模式
个人blog 此篇博文地址:http://www.sanyinchenblog.com/?p=233
单例模式:
确保一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。
demo(https://github.com/sanyinchen/UMLDemo)
通用视图(饿汉式):
单例通用代码模板:
public class Singleton{ private static final Singleton singleton=new Singleton(); private Singleton() { } public static Singleton getSingleton() { return singleton; } public static void soSomthing() { } }
书中举了一个臣子朝拜皇上的例子:皇帝每天要上朝接待臣子,处理政务,臣子每天要叩拜皇上。而皇帝就那个唯一的单例。
Minister类:
package com.sanyinchen.singleon; public class Emperor { private static Emperor emperor = null; private Emperor() { } public synchronized static Emperor getInstance() { if (emperor == null) { emperor = new Emperor(); } return emperor; } public void say() { System.out.println("我就是皇帝啦啦啦...."); } }Emperor类:
package com.sanyinchen.singleon; public class Emperor { private static Emperor emperor = null; private Emperor() { } public synchronized static Emperor getInstance() { if (emperor == null) { emperor = new Emperor(); } return emperor; } public void say() { System.out.println("我就是皇帝啦啦啦...."); } }运行结果:
我就是皇帝啦啦啦.... 我就是皇帝啦啦啦.... 我就是皇帝啦啦啦.... 我就是皇帝啦啦啦.... 我就是皇帝啦啦啦.... 我就是皇帝啦啦啦.... 我就是皇帝啦啦啦.... 我就是皇帝啦啦啦.... 我就是皇帝啦啦啦.... 我就是皇帝啦啦啦....上面的单例模式为懒汉式,还有一种懒汉式,则是在定义的时候直接进行初始化,返回时直接返回此对象。
单例模式的优点:
(1)减少内存开支
(2)减少系统性能开销
(3)避免对资源的多重占用
(4)优化和共享资源
单例模式的缺点:
(1)单例模式一般没有接口,扩展很难
(2)单例模式对策是不利
(3) 单例模式与单一职责原则有冲突
设计模式之禅-单例模式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。