设计模式之单例模式

来源:互联网 发布:安广网络电视黑屏 编辑:程序博客网 时间:2024/06/06 03:27

单例模式,就是这个类在整个应用中只有一份内存,不能通过new来创造实例类。好处就是可以减少系统内存的消耗和减少系统构造和析构的时间,提高程序效率。

我们很多应用都有个日期类,来显示当前的年,月,日等,特别是用于时钟的应用设计,每次更新时间都new一下,系统的开销是很大的,这里采用单例模式来设计,就能很好的解决这个问题,附上代码如下,开发平台为android平台:

package com.android.DigitalTime;
 
import java.util.Calendar;
import android.content.Context;
import android.util.Log;
 
public class DateInfo  
{
    private static int date_month;
    private static int date_day;
    private static int date_hour;
    private static int date_minute;
    private static int date_second;
    private static int date_week;
    private static DateInfo dateInfo=null;
    private static boolean IsDebug = false;
    private static String TAG = "DateInfo";
    public int getDate_month()  
    {
        return date_month;
    }
    public void setDate_month(int dateMonth)
    {
        date_month = dateMonth;
    }
    public int getDate_day() {
        return date_day;
    }
    public void setDate_day(int dateDay)  
    {
        date_day = dateDay;
    }
    public int getDate_hour()  
    {
        return date_hour;
    }
    public void setDate_hour(int dateHour)  
    {
        date_hour = dateHour;
    }
    public int getDate_minute()  
    {
        return date_minute;
    }
    public void setDate_minute(int dateMinute)  
    {
        date_minute = dateMinute;
    }
    public int getDate_second() {
        return date_second;
    }
    public void setDate_second(int dateSecond)  
    {
        date_second = dateSecond;
    }
    public int getDate_week() {
        return date_week;
    }
    public void setDate_week(int dateWeek)  
    {
        date_week = dateWeek;
    }
 
    private DateInfo(int dateMonth, int dateDay, int dateHour, int dateMinute,
            int dateSecond, int dateWeek)  
    {
        super();
        date_month = dateMonth;
        date_day = dateDay;
        date_hour = dateHour;
        date_minute = dateMinute;
        date_second = dateSecond;
        date_week = dateWeek;
    }
    private DateInfo()  
    {
        super();
        // TODO Auto-generated constructor stub
    }
 
    public static DateInfo getInstance(Context context)  
    {
        if(dateInfo==null)
        {
            dateInfo = new DateInfo();
        }
        try  
        {
            Calendar calendar = Calendar.getInstance();
            // calendar.setTimeInMillis(SystemClock.uptimeMillis());
            dateInfo.setDate_month(calendar.get(Calendar.MONTH) + 1);
            dateInfo.setDate_day(calendar.get(Calendar.DAY_OF_MONTH));
            dateInfo.setDate_week(calendar.get(Calendar.DAY_OF_WEEK));
            if (android.text.format.DateFormat.is24HourFormat(context))  
            {
                dateInfo.setDate_hour(calendar.get(Calendar.HOUR_OF_DAY));
            }  
            else  
            {
                dateInfo.setDate_hour(calendar.get(Calendar.HOUR));
                if (calendar.get(Calendar.HOUR)==0)
                {
                   dateInfo.setDate_hour(calendar.get(Calendar.HOUR)+12);
                }
            }
 
            dateInfo.setDate_minute(calendar.get(Calendar.MINUTE));
            //Log.i("dingchao Digital Time", "dateInfo.getDate_minute():"+dateInfo.getDate_minute());
            dateInfo.setDate_second(calendar.get(Calendar.SECOND));
 
        }  
        catch (Exception e)  
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return dateInfo;
    }
    
}



原创粉丝点击