디자인 모드 - 굶 주 림 식, 게 으 른 식

6273 단어 디자인 모드
4. 567917. 단일 디자인 모델: 하나의 사례 가 있 고 하나의 사례 만 있 으 며 그 에 게 전체적인 방문 점 을 제공 하도록 확보한다.구체 적 실현: 1. 구조 함 수 를 민영화 한다.2. 클래스 에 이 클래스 의 대상 을 만 듭 니 다.3. 이 대상 을 얻 을 수 있 는 방법 을 제공 합 니 다
4. 567917. 2.1 굶 주 린 사람 식: 단일 클래스 가 메모리 에 들 어가 자마자 대상 을 만 들 었 습 니 다
class Single{
    private  Single(){}
    private static Single s = new Single();
    public static  Single getInstance(){
        return s;
    }
}
  2.2   :      ,         ,    。
class SingleDemo {  
    private static SingleDemo s = null;  
    private SingleDemo(){}  
    public static synchronized SingleDemo getInstance(){  
        if(s == null){  
            s = new SingleDemo();  
        }  
        return s;  
    }  
}  

3. 굶 주 린 한식 일례
class SingletonDemo{
    public static void main(String[] args) {
        Student s1 = Student.getStudent();
        s1.setAge(12);
        Student s2 = Student.getStudent();
        s2.setAge(30);
        System.out.println(s1.getAge());
        System.out.println(s2.getAge());
    }
}
class Student{
    private int age;
    private static Student s = new Student();
    private Student(){}
    public static Student getStudent(){
        return s;
    }
    public void setAge(int age){
        this.age = age;
    }
    public int getAge(){
        return age;
    }
}


4. 게으름뱅이 식 의 일례 게으름뱅이 식 은 단선 에서 게으름뱅이 식 과 굶 주 린 한식 의 차이 가 없다.그러나 다 중 스 레 드 환경 에서 굶 주 린 사람 은 문제 가 없고 게 으 른 사람 은 여러 가지 사례 를 만 들 수 있다.따라서 스 레 드 동기 화 (synchronized) 를 사용 하여 다 중 스 레 드 환경 에서 여러 개의 인 스 턴 스 를 만 들 지 않도록 해 야 합 니 다.
게으름뱅이 싱글 스 레 드
class Demo{
    public static void main(String[] args) {  
        SingleDemo s1 = SingleDemo.getInstance();  
        SingleDemo s2 = SingleDemo.getInstance();  
        System.out.println(s1 == s2); 
        System.out.println(s1); 
        System.out.println(s2); 
    }  
}
class SingleDemo {  
    private static SingleDemo s = null;  
    private SingleDemo(){}  
    public static SingleDemo getInstance(){  
        if(s == null){  
            s = new SingleDemo();  
        }  
        return s;  
    }  
}  

게으름뱅이 다 중 스 레 드
class SingletonDemo2{
    public static void main(String[] args) {  
        RunDemo r1=new RunDemo();
        RunDemo r2=new RunDemo();
        Thread t1=new Thread(r1);
        Thread t2=new Thread(r2);
        t1.start();
        t2.start();
    }  
}
class RunDemo extends Thread{
    public void run(){
        System.out.println(SingleDemo.getInstance());
    }
}
class SingleDemo {  
    private static SingleDemo s = null;  
    private SingleDemo(){}  
    public static synchronized SingleDemo getInstance(){  
        if(s == null){  
            s = new SingleDemo();  
        }  
        return s;  
    }  
}  

게으름뱅이 식 의 목적 은 성능 을 향상 시 키 기 위해 synchronized 는 성능 을 떨 어 뜨 렸 다.

좋은 웹페이지 즐겨찾기