黑马程序员技术交流社区

标题: 单实例模式 [打印本页]

作者: lygku    时间: 2015-6-24 12:50
标题: 单实例模式
  1. /*
  2. 设计模式方式1;
  3. 几种模式综合在一起就是框架,有23种设计模式;
  4. 单例设计模式:
  5. 解决一个类在内存只存在一个对象。

  6. 想要保证对象唯一

  7. 1、为了避免其他程序过多建立该类对象,先禁止其他程序建立
  8. 2、还为了让其他可以访问该类对象,只要在本类中自定一个对象
  9. 3、为了方便其他程序对自定义对象的访问,可以对外提供一些访问方式

  10. 如果用代码体现:

  11. 1、将 类中方法私有化:           ---private关键字,其他程序无法建立对象
  12. 2、在类中创建一个本类对象        ---直接返回给外界一个对象,外界就不需要自己新建对象来访问,
  13.                   而且也建不了,因为构造函数被私有化了,众所周知,声明对象必须运行构造函数进行初始化数据。
  14. 3、提供一个方法可以获取到该对象  ---其他都被私有化!

  15. 当需要将事物的对象保证在内存中唯一时,就将以以下三步加上即可;
  16. */
  17. class Single{
  18.      
  19.      private int num;
  20.      public void setNum(int num){
  21.      
  22.        this.num=num;
  23.      }
  24.      
  25.      public int getNum(){
  26.      
  27.          return num;
  28.      }
  29.      //第一步 私有化构造函数,导致外界无法建立对象
  30.      private Single(){};
  31.      
  32.      //第二步  --这个的格式和 int x = 。。。一样,Single 是类类型。
  33.      private static Single s = new Single();
  34.      
  35.      //第三步  返回数据类型是 类类型,因为对象是类类型,因为没有其他对象可以调用,只能用类名掉调用,所以加static
  36.      //         其次要访问静态成员,就是第二步,所以第二步的对象也要静态,
  37.      public static Single getInstance(){
  38.      
  39.         return s;
  40.      
  41.      }
  42.    
  43. }


  44. class SingleDemo{

  45.     public static void main(String[] args){
  46.       
  47.        //可以在本类中的声明一个对象
  48.        //SingleDemo s0 = new SingleDemo();
  49.       
  50.        //返回的是类类型的对象
  51.       Single s1 = Single.getInstance();
  52.      
  53.       Single s2 = Single.getInstance();
  54.       //SingleDemo s2 = new SingleDemo();
  55.       s1.setNum(20);
  56.       System.out.println(s2.getNum()); //结果是20,si s2在内存中共用一个对象
  57.      
  58.     }
  59. }
复制代码







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