单例设计模式

来源:互联网 发布:游戏服务端 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();
    }
        
        
        
        
        
        
        
        
       
0 0