黑马程序员技术交流社区

标题: Java面向对象笔记(单例设计模式) [打印本页]

作者: Johnny_Hu    时间: 2015-3-10 21:05
标题: Java面向对象笔记(单例设计模式)
思想:
对象的唯一性(解决一个类在内存只存在一个对象)
1、为了避免其他程序过多建立该类对象,先禁止其他程序建立该类对象;
2、还为了让其他程序可以访问到该类对象,只好在本类中,自定义对象;
3、为了方便其他程序对自定义的访问,可以对外提供一些访问方式。

代码步骤:
1、将构造函数私有化
2、在类中创建一个本类对象
3、提供一个方法可以获取到该对象
注意:
对于事物该怎么描述,还是怎么描述
当需要将该事物的对象保证在内存中唯一性时,就将以上的三部加上即可
下面是例子
  1. package com.hupingyan.Static;

  2. class DesginTool
  3. {
  4.         private int num;
  5.         public void setNum(int num)
  6.         {
  7.                 this.num = num;
  8.         }
  9.         public int getNum()
  10.         {
  11.                 return num;
  12.         }       
  13.         //单例设计模式三部曲 Start
  14.         private DesginTool(){}
  15.         private static DesginTool desgin = new DesginTool();
  16.         public static DesginTool getObject()
  17.         {
  18.                 return desgin;
  19.         }
  20.         //单例设计模式三部曲 End
  21. }


  22. public class Desgin {
  23.         public static void main(String[] args)
  24.         {
  25.                 DesginTool aa = DesginTool.getObject();
  26.                 DesginTool aa1 = DesginTool.getObject();
  27.                 aa.setNum(50);
  28.                 System.out.println(aa.getNum());
  29.                 System.out.print(aa1.getNum());
  30.         }
  31. }
复制代码

作者: Johnny_Hu    时间: 2015-3-10 21:31
单例设计模式可以分为饿汉式和懒汉式
饿汉式:single 类一进内存,就已经创建好了对象
例子:
  1. class single
  2. {
  3.        private single(){}
  4.        private single s = new single();
  5.        public static single getSingle()
  6.     {
  7.         return s;
  8.     }
  9. }
复制代码


懒汉式:single类进内存,对象还没存在,只有调用了getSingle方法时,才建立对象。
例子:
  1. class single
  2. {
  3.     private single(){}
  4.     private static single s = null;
  5.     public static single getSingle()
  6.     {
  7.         if(s==null)
  8.         {
  9.             s = new single();      
  10.         }
  11.         return s;
  12.     }
  13. }
复制代码
一般开发中用饿汉式 ,而懒汉式面试时会碰到
作者: 袁丙轩    时间: 2015-3-10 21:37
学习了。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2