A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

ming12

初级黑马

  • 黑马币:

  • 帖子:

  • 精华:

© ming12 初级黑马   /  2015-5-10 15:39  /  131 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

设计模式:解决某一类问题最行之有效的方法。java中共有23种设计模式,其中
单例设计模式:解决一个类在内存中只存在一个对象。
想要保证对象唯一:
1,为了避免其他程序过多的建立该类对象,先禁止其他程序建立该类对象
2, 还为了让其他程序访问到该类对象,只好在本垒中,自定义一个对象
3,为了方便其他程序对自定义对象的访问,可以对外提供一些访问方式
实现 这三部的步骤
  1,将构造函数私有化
  2,在类中创建一个本类对象
  3,提供一个方法可以获取到该对象
  通过方法才能拿到对象,方法被调用只能有两种方式,要么对象,要么类名,现在因为构造方法是私有的,所以不能new对象了,能被类名调用,这个方法必须是静态的,访问方法必定访问类中成员,静态只能访问静态,所以这个成员也需要设置为静态 的。类中的成员变量一般是私有的。
  1. public class Student {
  2.         private String name;
  3.         private Student(){}
  4.         private static Student s= new Student();
  5.         public static Student getInstance(){
  6.                 return s;
  7.         }
  8.         public String getName() {
  9.                 return name;
  10.         }
  11.         public void setName(String name) {
  12.                 this.name = name;
  13.         }

  14.         public static void main(String[] args) {
  15.                 // TODO Auto-generated method stub
  16.                 Student s1 = Student.getInstance();
  17.                 Student s2 = Student.getInstance();
  18.                 s1.setName("张三");
  19.                 System.out.println(s2.getName());
  20.         }

  21. }
复制代码

运行结果:张三
说明s1和s2为同一个对象。
  1. public class Student1 {
  2.         private String name;

  3.         public String getName() {
  4.                 return name;
  5.         }

  6.         public void setName(String name) {
  7.                 this.name = name;
  8.         }

  9.         public Student1() {
  10.                 // TODO Auto-generated constructor stub
  11.         }
  12.         public static void main(String [] args){
  13.                 Student1 s1 = new Student1();
  14.                 Student1 s2 = new Student1();
  15.                 s1.setName("zhangsan");
  16.                 System.out.println(s2.getName());
  17.         }
  18. }
复制代码

运行结果为:null



您需要登录后才可以回帖 登录 | 加入黑马