(学习笔记)设计模式之单例模式
2017-09-03 08:34
218 查看
单例模式 的作用是让整个程序中只有某个物体一个对象。
比如数据库的连接,一般只有一个对象。rpg游戏中一个主角只能有一个对象等等
这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。
注意:
1、单例类只能有一个实例。
2、单例类必须自己创建自己的唯一实例。
3、单例类必须给所有其他对象提供这一实例。
优点: 1、在内存里只有一个实例,减少了内存的开销,尤其是频繁的创建和销毁实例(比如管理学院首页页面缓存)。 2、避免对资源的多重占用(比如写文件操作)。
缺点:没有接口,不能继承,与单一职责原则冲突,一个类应该只关心内部逻辑,而不关心外面怎么样来实例化。
一般写法:
public class SingleObject {
//创建 SingleObject 的一个对象
private static SingleObject instance = new SingleObject();
//让构造函数为 private,这样该类就不会被实例化
private SingleObject(){}
//获取唯一可用的对象
public static SingleObject getInstance(){
return instance;
}
public void showMessage(){
System.out.println("Hello World!");
}
}
比如数据库的连接,一般只有一个对象。rpg游戏中一个主角只能有一个对象等等
这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。
注意:
1、单例类只能有一个实例。
2、单例类必须自己创建自己的唯一实例。
3、单例类必须给所有其他对象提供这一实例。
优点: 1、在内存里只有一个实例,减少了内存的开销,尤其是频繁的创建和销毁实例(比如管理学院首页页面缓存)。 2、避免对资源的多重占用(比如写文件操作)。
缺点:没有接口,不能继承,与单一职责原则冲突,一个类应该只关心内部逻辑,而不关心外面怎么样来实例化。
一般写法:
public class SingleObject {
//创建 SingleObject 的一个对象
private static SingleObject instance = new SingleObject();
//让构造函数为 private,这样该类就不会被实例化
private SingleObject(){}
//获取唯一可用的对象
public static SingleObject getInstance(){
return instance;
}
public void showMessage(){
System.out.println("Hello World!");
}
}
相关文章推荐
- Java学习笔记——单例设计模式Singleton
- java设计模式学习笔记-单例模式
- 设计模式学习笔记---装饰模式decorator(Java版)
- 设计模式学习笔记-外观模式
- 学习笔记:关注C++设计模式之Singleton模式
- 设计模式学习笔记(二十二)—FlyWeight享元模式
- 设计模式学习笔记-观察者模式
- 设计模式学习笔记之装饰者模式
- 【设计模式学习笔记】 之 策略模式
- 设计模式学习笔记之工厂模式
- 设计模式学习笔记-抽象工厂模式
- 设计模式学习笔记(一)--Facade外观模式
- 设计模式学习笔记(2)——简单工厂模式
- 设计模式学习笔记(十六)—Proxy模式
- 阿Sam的设计模式学习笔记---- Adapter模式
- 设计模式之禅学习笔记--命令模式
- 设计模式学习笔记(十)—Factory Method模式
- C#设计模式学习笔记-单例模式
- 设计模式之State模式(学习笔记)
- 《Head First 设计模式》学习心得笔记