>  기사  >  Java  >  자바 디자인 패턴의 싱글톤 패턴 설명

자바 디자인 패턴의 싱글톤 패턴 설명

巴扎黑
巴扎黑원래의
2017-07-21 17:03:451382검색

Java에는 총 23개의 디자인 패턴이 있다는 것을 배웠습니다. 디자인 패턴은 잘 알려져 있고 반복적으로 사용되며 일반적인 코드 경험 요약입니다. 각 디자인 패턴은 프로젝트에서 반복적으로 발생하게 될 문제를 나타내기 때문에 디자인 패턴을 합리적으로 사용하면 많은 문제를 완벽하게 해결할 수 있습니다.

Java 디자인 패턴을 배우는 것이 필요합니다. 객체지향에서는 상속과 인터페이스를 학습하지 않았지만, 23가지 디자인 패턴 중 싱글턴 패턴은 이미 이해가 가능합니다.

싱글턴은 일반적으로 사용되는 디자인 패턴입니다. Java 애플리케이션에서 싱글톤 객체는 JVM에 객체의 인스턴스가 하나만 존재하도록 보장할 수 있습니다. 구체적인 표현 형태는 두 가지가 있습니다.

package 面向对象;//单例设计模式第一种public class Singleton 
{public static void main(String[] args)
    {
    SingletonDemo a=SingletonDemo.getInstance();
    }
}class SingletonDemo
{private static SingletonDemo a =null;private SingletonDemo(){}public static SingletonDemo getInstance()
    {if(a==null)
        {
            SingletonDemo a=new SingletonDemo();
        }return a;
    }
}

이렇게 하면 메소드가 호출될 때만 새로운 객체가 생성된다고 볼 수 있으나 멀티스레딩에서는 문제가 발생하기 쉬우므로 일반적으로 다음과 같은 방법을 사용합니다. 개발에 사용됩니다.

 1 package 面向对象; 2  3 public class Singleton_2 
 4 { 5     public static void main(String[] args) 6     { 7         Singleton_2Demo a=Singleton_2Demo.getInstance(); 8     } 9 }10 11 class Singleton_2Demo12 {13     private Singleton_2Demo(){}14     private static Singleton_2Demo a=new Singleton_2Demo();15     public static Singleton_2Demo getInstance()16     {17         return a;18     }19 }

이 방법은 간단하고 멀티스레딩 문제를 고려할 필요가 없습니다

이 디자인 패턴을 사용하여 이전 연구에서 작성한 객체 지향 연습 문제를 조정하고 싱글턴을 구현했습니다. 무늬.

원본 코드:

package 面向对象; class Student 
{    private String name;private int number;private String sex;private boolean learn;private String a;
    Student()
     {
         name="未知";
         number=000;
         sex="未知";
         learn=false;
         a="未知";
     }     public void setName(String name)
     {         this.name=name;
     }     public void setNumber(int number)
     {         this.number=number;
     }     public void setSex(String sex)
     {         this.sex=sex;
     }     public void setLearn(boolean learn)
     {         this.learn=learn;
     }     void scan()
    {if(this.learn==true)
        {
            a="在学习";    
        }else{
            a="不在学习";
        }    
         System.out.print("姓名:"+this.name+" 学号:"+this.number+" 性别;"+this.sex+" 是否在学习:"+a);
    }
    
} class Data
 {     public static void main(String[] arg)
     {
         Student XiaoMin=new Student();
         XiaoMin.setName("小明");
         XiaoMin.setNumber(13023);
         XiaoMin.setSex("男");
         XiaoMin.setLearn(true);
         XiaoMin.scan();
     }
 }

단일 케이스 모드:

package 面向对象;//实现单例设计模式
 class Student_1 
{    private String name;private int number;private String sex;private boolean learn;private String a;     private Student_1()
     {
         name="未知";
         number=000;
         sex="未知";
         learn=false;
         a="未知";
     }     private static Student_1 b=new Student_1();     public static Student_1 getInstance()
     {         return b;
     }     public void setName(String name)
     {         this.name=name;
     }     public void setNumber(int number)
     {         this.number=number;
     }     public void setSex(String sex)
     {         this.sex=sex;
     }     public void setLearn(boolean learn)
     {         this.learn=learn;
     }     void scan()
    {if(this.learn==true)
        {
            a="在学习";    
        }else{
            a="不在学习";
        }    
         System.out.print("姓名:"+this.name+" 学号:"+this.number+" 性别;"+this.sex+" 是否在学习:"+a);
    }
    
} class Data_2
 {     public static void main(String[] arg)
     {
         Student_1 XiaoMin=Student_1.getInstance();
         XiaoMin.setName("小王");
         XiaoMin.setNumber(13023);
         XiaoMin.setSex("男");
         XiaoMin.setLearn(true);
         XiaoMin.scan();
     }
 }

위 내용은 자바 디자인 패턴의 싱글톤 패턴 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.