黑马程序员技术交流社区

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

作者: ming12    时间: 2015-5-10 15:39
标题: 单例设计模式
设计模式:解决某一类问题最行之有效的方法。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








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