设计模式:解决某一类问题最行之有效的方法。java中共有23种设计模式,其中
单例设计模式:解决一个类在内存中只存在一个对象。
想要保证对象唯一:
1,为了避免其他程序过多的建立该类对象,先禁止其他程序建立该类对象
2, 还为了让其他程序访问到该类对象,只好在本垒中,自定义一个对象
3,为了方便其他程序对自定义对象的访问,可以对外提供一些访问方式
实现 这三部的步骤
1,将构造函数私有化
2,在类中创建一个本类对象
3,提供一个方法可以获取到该对象
通过方法才能拿到对象,方法被调用只能有两种方式,要么对象,要么类名,现在因为构造方法是私有的,所以不能new对象了,能被类名调用,这个方法必须是静态的,访问方法必定访问类中成员,静态只能访问静态,所以这个成员也需要设置为静态 的。类中的成员变量一般是私有的。- public class Student {
- private String name;
- private Student(){}
- private static Student s= new Student();
- public static Student getInstance(){
- return s;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- Student s1 = Student.getInstance();
- Student s2 = Student.getInstance();
- s1.setName("张三");
- System.out.println(s2.getName());
- }
- }
复制代码
运行结果:张三
说明s1和s2为同一个对象。
- public class Student1 {
- private String name;
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public Student1() {
- // TODO Auto-generated constructor stub
- }
- public static void main(String [] args){
- Student1 s1 = new Student1();
- Student1 s2 = new Student1();
- s1.setName("zhangsan");
- System.out.println(s2.getName());
- }
- }
复制代码
运行结果为:null
|
|