单例模式的理解与应用
来源:互联网 发布:苹果 看书软件 编辑:程序博客网 时间:2024/06/05 05:50
java模式之单例模式:
单例模式确保一个类只有一个实例,自行提供这个实例并向整个系统提供这个实例。
特点:
1,一个类只能有一个实例
2,自己创建这个实例
3,整个系统都要使用这个实例
Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在。在很多操作中,比如建立目录
数据库连接都需要这样的单线程操作。一些资源管理器常常设计成单例模式。
外部资源:譬如每台计算机可以有若干个打印机,但只能有一个Printer
Spooler,以避免两个打印作业同时输出到打印机中。每台计算机可以有若干个通信端口,系统应当集中管理这些通信端口,以避免一个通信端口被两个请求同时调用。内部资源,譬如,大多数的软件都有一个(甚至多个)属性文件存放系统配置。这样的系统应当由一个对象来管理这些属性文件。
一个例子:Windows
回收站。
在整个视窗系统中,回收站只能有一个实例,整个系统都使用这个惟一的实例,而且回收站自行提供自己的实例。因此,回收站是单例模式的应用。
在很多开发中,项目为了节约资源,都把一个类的构造函数变为私有化,这样整个项目中就不能创建多个实例,这样的方法我们称为单例模式
现在通过代码来简介下这个单例模式:
在新建一个java项目后,创建一个实体类User.java,和测试类,main.java
代码如下:
1 public class User { 2 private static User user; 3 4 //添加该实例的属性 5 private String name; 6 private String sex; 7 private String age; 8 /** 9 * @return10 * 初始化一个实例11 */12 public static User getInstens(){13 if(user == null){14 user = new User();15 }16 return user;17 }18 19 /**20 *为了实现 整个项目中,该对象的实例只有一个(有利于节约资源),从而私有化该实例的构造方法21 *这样就没办法在其他地方new 出一个实例22 */23 private User(){24 25 }26 27 public User getUser() {28 return user;29 }30 public void setUser(User user) {31 this.user = user;32 }33 public String getName() {34 return name;35 }36 public void setName(String name) {37 this.name = name;38 }39 public String getSex() {40 return sex;41 }42 public void setSex(String sex) {43 this.sex = sex;44 }45 public String getAge() {46 return age;47 }48 public void setAge(String age) {49 this.age = age;50 }51 52 }
再添加main代码来测试:
1 public class main {2 public static void main(String ages[]) {3 4 User user = User.getInstens();5 user.setName("单列模式");6 System.out.println(user.getName());7 }8 }
这里就得main.java就可以直接通过User.getInstens()来拿到User 的实例对象。
而在整个项目中就可以保证 该实例只被创建一次,被多次使用;故称之为单例模式
0 0
- 单例模式的理解与应用
- [置顶]单例模式的理解与应用
- 对工厂模式与单例模式的理解
- 单例模式的理解
- 单例模式的理解
- 单例模式的理解
- 单例模式的理解
- JAVA Static方法与单例模式的理解
- JAVA Static方法与单例模式的理解
- 关键字static与单例模式的一点理解
- 彻头彻尾理解单例模式与多线程
- 单例模式理解与总结
- 单例模式的应用
- 单例模式的应用
- 单例模式的应用
- 单例模式的应用
- 单例模式的应用
- 轻松掌握单例模式的理论与应用
- 微博项目学习笔记1
- 插入排序的简单解释(C++)
- Html5 onpopstate 事件禁止手机设备上的返回操作
- ViewController生命周期
- Open edX Devstak加快开发者模式调试速度
- 单例模式的理解与应用
- ubuntu系统备份与还原
- 学习PHP到底要学习哪些东西?
- Java中获取文件大小的正确方法
- JQ中判断list是否含有元素
- 收集了一个pyqt4做的浏览器
- SwipeListViewExampleActivity工程使用说明
- 后端工作流
- unity 2d遮挡透明显示整理