몇 가지 안 드 로 이 드 디자인 모델 을 분석 하 다.

단일 모드
단일 클래스 가 하나의 인 스 턴 스 만 있 는 지 확인 하고 이 단일 클래스 는 하나의 함수 인 터 페 이 스 를 제공 하여 다른 클래스 가 이 유일한 인 스 턴 스 를 가 져 올 수 있 도록 합 니 다.
상대 적 으로 완벽 한 단일 표기 법
public class Singleton{
    private volatile static Singleton instance;//volatile            
    //           ,       new
    private Singleton(){};
    public static Singleton getInstance(){
    if(instance==null){
        sychronized(Singleton.class){
            if(instance==null)
                instance=new Singleton();
        }
    }
    return instatnce;
    }
}

빌 더 모드
주로 대상 을 만 들 때 많은 매개 변 수 를 설정 해 야 합 니 다 (setter 방법 을 통 해). 그러나 이 매개 변 수 는 특정한 순서에 따라 설정 하거나 설정 절차 에 따라 결 과 를 얻 을 수 있 습 니 다.이것 은 주로 체인 호출 에 사용 되 는데 이것 도 Builder 디자인 모델 중의 뚜렷 한 특징 이다.
public class MyBuilder{
private int id;
private String num;
public MyData build(){
    MyData d=new MyData();
    d.setId(id);
    d.setNum(num);
    return t;
}
public MyBuilder setId(int id){
    this.id=id;
    return this;
}
public MyBuilder setNum(String num){
    this.num=num;
    return this;
}

}
public class Test{
public static void  main(String[] args){
    MyData d=new MyBuilder().setId(10).setNum("hc").build();
}

}

공장 모드
생 성 대상 의 인 터 페 이 스 를 정의 하여 하위 클래스 가 어떤 종 류 를 예화 할 지 결정 합 니 다 (전략 모드, 상태 모드 유사)
public abstract class Product{
public abstract void method();
} 

public class ConcreteProductA extends Prodect{
public void method(){
    System.out.println("    A!");
    }
}

public class ConcreteProductB extends Prodect{
public void method(){
    System.out.println("    B!");
    }
}
public  abstract class Factory{
    public abstract Product createProduct();
}

public class MyFactory extends Factory{

    public Product createProduct(){
        return new ConcreteProductA();
    }
}

글 내용 부분 참조:http://www.jianshu.com/p/1a9f571ad7c0

좋은 웹페이지 즐겨찾기