单例设计模式
来源:互联网 发布:游戏服务端 python 编辑:程序博客网 时间:2024/05/20 02:28
单例设计模式
1.概述:
单例设计模式:解决一个类在内存中只存在一个对象
1.为了避免其他程序过多建立该类对象,先禁止其他程序建立该类对象
2.还为了让其他程序可以访问到该类对象,只好在本类中自定义一个对象
3.为了方便其他程序对自定义对象的访问,可以对外提供一些访问方式。
这三步怎么用代码体现呢?
1.将该类构造函数私有化
2.在类中创建一个本来对象
3.提供一个方法可以获取到该对象
2. 单例设计模式的两种实现方式:
饿汉式:一进内存 就创建了对象
class single{
private single(){}1.将构造函数私有化
private static single s=new single();2.在类中创建一个本类对象
public static single getInstance(){3.提供一个方法可以获取到该对象的方法
return s;
}
}
public class SingleDemo {
public static void main(String[] args) {
single ss=single.getInstance();
}
}
懒汉式:什么时候调用什么时候创建对象,对象的延时加载
class single{
private single(){}
private static single s=null;
public static single getInstance(){
if(s==null){
synchronized(Single.class)//同步锁
{
if(s==null){
s=single.getInstance();
}
}
}
return s;
}
}
public class SingleDemo {
public static void main(String[] args) {
single ss=single.getInstance()
}
}
3. 单例模式的有点:
只有一个实例: 减少了内存开支
只有一个实例: 减少了系统性能开销
单例模式可以避免对资源的多重占用
4. 实例: 当我们得到一个界面的对象的时候,每次都要初始化其中的属性:
业务方法,并且要多次使用,如果不使用单例模式,每次使用都要初始化。
系统性能开销大,内存开支大
public class TitleManager implements Observer {
/*
* 单例设计模式,目的是为了只初始化一次:
*/
private static TitleManager titlemanager = new TitleManager();
private TitleManager(){};
public static TitleManager getTitlemanager() {
return titlemanager;
}
protected static final String tag = "TitleManager";
private RelativeLayout commonTitle;
private RelativeLayout unLoginTitle;
private RelativeLayout loginTitle;
private ImageView goback;
private ImageView help;
private ImageView register;
private ImageView login;
public void init(Activity activity){
commonTitle = (RelativeLayout) activity.findViewById(R.id.ii_common_container);
unLoginTitle = (RelativeLayout) activity.findViewById(R.id.ii_unlogin_title);
loginTitle = (RelativeLayout) activity.findViewById(R.id.ii_login_title);
goback = (ImageView) activity.findViewById(R.id.ii_title_goback);
help = (ImageView) activity.findViewById(R.id.ii_title_help);
register = (ImageView) activity.findViewById(R.id.ii_title_regist);
login = (ImageView) activity.findViewById(R.id.ii_title_login);
click();
}
1.概述:
单例设计模式:解决一个类在内存中只存在一个对象
1.为了避免其他程序过多建立该类对象,先禁止其他程序建立该类对象
2.还为了让其他程序可以访问到该类对象,只好在本类中自定义一个对象
3.为了方便其他程序对自定义对象的访问,可以对外提供一些访问方式。
这三步怎么用代码体现呢?
1.将该类构造函数私有化
2.在类中创建一个本来对象
3.提供一个方法可以获取到该对象
2. 单例设计模式的两种实现方式:
饿汉式:一进内存 就创建了对象
class single{
private single(){}1.将构造函数私有化
private static single s=new single();2.在类中创建一个本类对象
public static single getInstance(){3.提供一个方法可以获取到该对象的方法
return s;
}
}
public class SingleDemo {
public static void main(String[] args) {
single ss=single.getInstance();
}
}
懒汉式:什么时候调用什么时候创建对象,对象的延时加载
class single{
private single(){}
private static single s=null;
public static single getInstance(){
if(s==null){
synchronized(Single.class)//同步锁
{
if(s==null){
s=single.getInstance();
}
}
}
return s;
}
}
public class SingleDemo {
public static void main(String[] args) {
single ss=single.getInstance()
}
}
3. 单例模式的有点:
只有一个实例: 减少了内存开支
只有一个实例: 减少了系统性能开销
单例模式可以避免对资源的多重占用
4. 实例: 当我们得到一个界面的对象的时候,每次都要初始化其中的属性:
业务方法,并且要多次使用,如果不使用单例模式,每次使用都要初始化。
系统性能开销大,内存开支大
public class TitleManager implements Observer {
/*
* 单例设计模式,目的是为了只初始化一次:
*/
private static TitleManager titlemanager = new TitleManager();
private TitleManager(){};
public static TitleManager getTitlemanager() {
return titlemanager;
}
protected static final String tag = "TitleManager";
private RelativeLayout commonTitle;
private RelativeLayout unLoginTitle;
private RelativeLayout loginTitle;
private ImageView goback;
private ImageView help;
private ImageView register;
private ImageView login;
public void init(Activity activity){
commonTitle = (RelativeLayout) activity.findViewById(R.id.ii_common_container);
unLoginTitle = (RelativeLayout) activity.findViewById(R.id.ii_unlogin_title);
loginTitle = (RelativeLayout) activity.findViewById(R.id.ii_login_title);
goback = (ImageView) activity.findViewById(R.id.ii_title_goback);
help = (ImageView) activity.findViewById(R.id.ii_title_help);
register = (ImageView) activity.findViewById(R.id.ii_title_regist);
login = (ImageView) activity.findViewById(R.id.ii_title_login);
click();
}
0 0
- 设计模式--单例
- 单例设计模式
- 设计模式----单例
- 单例设计模式
- 单例设计模式
- 单例设计模式
- 单例设计模式
- 单例设计模式
- 单例设计模式
- 单例设计模式
- 设计模式-单例
- 单例设计模式
- 单例设计模式
- 单例设计模式
- 单例设计模式
- 单例设计模式
- 单例设计模式
- 单例设计模式
- MySQL中函数CONCAT及GROUP_CONCAT
- java中JFrame 窗口关闭时,弹出一个对话框提示是否确定关闭
- 基于百度定位SDK的定位服务的实现
- 【整理】MySQL引擎
- vtkPolyData中GetPoint函数冲掉上一个数据的问题
- 单例设计模式
- Scripts:ash_gcwait_to_obj.sql
- iOS block
- ps -aux|grep 详细信息
- 十六进制转化为十进制的方法
- 合理规划SAT阅读备考节奏
- 算法 线性排序-计数排序
- 【似曾相识燕归来】
- java使用tomcat数据源连接mysql