간단 한 공장 설계 모델 에 대하 여 논 하 다.

단순 공장 설계 모델  핵심: 인터페이스    사상: 패키지 격 리  사실은 간단 한 공장 디자인 모델 은 위의 두 가지 측면 을 정리 하 는 것 이 라 고 할 수 있 지만 이 두 가지 가 이렇게 간단 하지 않다.우선 간단 한 공장 설계 모델 의 개념 을 설명 하기 전에 인 터 페 이 스 를 생각해 보 자.   인터페이스: 안에서 정 의 된 방법 은 모두 추상 적 인 방법 이 고 정 의 된 변 수 는 모두 상수 이다. 우 리 는 보통 인 터 페 이 스 를 실현 하여 안에 규정된 추상 적 인 방법 을 실현 한다. 그러면 실현 류 의 외관 은 바로 이 인터페이스 가 제공 하 는 것 이다. 우리 가 이전에 가장 많이 사용 한 것 은 인터페이스 가 다 형 성에 관 한 부분 이다.예 를 들 어 기 존의 모니터 디자인 모델 에서 통신 프로젝트 에 대해 데이터 층 과 표현 층 의 결합 성 을 약화 시 키 고 우 리 는 인터페이스의 이러한 특성 을 이용 했다.   지금 이렇게 생각해 보 세 요. 우 리 는 하나의 종 류 를 만 들 고 인 터 페 이 스 를 실 현 했 습 니 다. 우리 와 계약 을 실 현 했 습 니 다. 이 인 터 페 이 스 는 우리 가 대외 적 으로 호출 할 수 있 는 방법 을 제한 했다 고 할 수 있 습 니 다. (물론 인터페이스 에 속 하지 않 는 방법 도 만 들 수 있 습 니 다. 그러나 인 터 페 이 스 는 적어도 외부 에 제공 하 는 방법 을 규정 하고 있다) 그러면 이런 유형 에 대해 제약 이 생 겼 고 서로 다른 실현 유형, 똑 같은 방법 에 대해 서로 다른 실현 을 할 수 있다.   사실은 지금 우 리 는 인터페이스의 사상 이 '패 키 징 격 리' 라 는 것 을 느 낄 수 있다. 우 리 는 인터페이스 대외 적 인 방법 이 변 하지 않 으 면 우 리 는 내부 에 대해 어떠한 변경 도 할 수 있 고 호출 을 수정 하지 않 아 도 된다. 즉, 우리 의 프로그램 은 조립 성 을 가진다.  예 를 들 어 감성 적 인 인식 이 있 습 니 다. 1. 만약 인터페이스 가 있다 면 다음 과 같다.
/**
*             
*                move(String type)
*             
*/
public interface MoveEntry{
         public void move(String type);
}

   2. 현재 차 한 대 를 만들어 인 터 페 이 스 를 실현 한다. 
public class Car implements MoveEntry{
         public void move(String type){
	      System.out.println("      " + type);
          }
}

  3. 현재 한 고객 은 어떤 교통수단 을 원 하 는 지 모 르 지만 이동 할 수 있 는 대상 이 어떻게 이동 하 는 지 보고 싶 습 니 다.
public class Client{
         public static void main(String[] args){
	      MoveEntry entry = new Car();
	      entry.move("  !");
          }
}

          우리 가 이전에 인 터 페 이 스 를 사용 하 는 과정 에서 우리 가 일반적으로 사용 하 는 과정 은 모두 이 렇 습 니 다. 그러나 우리 가 위 에서 말 한 인터페이스의 사상 인 '패 키 징 격 리' 를 보면 위의 실현 과정 은 우리 가 원 하 는 효과 에 이 르 지 못 했 습 니 다. 왜냐하면 고객 은 이미 알 고 있 기 때문에 차 가 달리 고 있 지만 그 는 무엇 인지 알 고 싶 지 않 습 니 다. 이동 효 과 를 보면 됩 니 다.그럼 우리 이러 면 안 돼.       지금 은 간단 한 공장 설계 모델 이 등장 할 때 입 니 다. 이렇게 묘사 해 보 세 요. 우 리 는 공장 이 우리 가 필요 로 하 는 대상 을 만들어 야 합 니 다. 우 리 는 공장 안에서 어떻게 실현 하 는 지 에 관심 이 없습니다. 그리고 우 리 는 공장 을 포장 해서 클 라 이언 트 만 방법 을 호출 할 수 있 습 니 다.그러면 클 라 이언 트 와 실현 인터페이스 간 의 클래스 를 한 공장 으로 격 리 시 켜 실현 클래스 와 클 라 이언 트 간 의 결합 성 을 줄 일 수 있다.내 려 오 면 간단 한 공장 에서 위의 상황 을 처리 하면:       1. 인 터 페 이 스 는 여전히 위의 인터페이스 이자 Car 를 실현 하 는 유형 이 변 하지 않 고 공장 류 만 추가 할 뿐이다.
public class Factory{
         public static MoveEntry createMoveEntry(){
	      return new Car();
         }
}

   2. 그러면 현재 클 라 이언 트 호출 은 이렇게 진행 할 수 있 습 니 다. 
public class Client{
         public static void main(String[] ahrs){
	        MoveEntry entry = Factory.createMoveEntry();
                entry.move("   !");
          }
}

          위 에서 우 리 는 알 수 있 듯 이 현재 클 라 이언 트 는 누가 인 터 페 이 스 를 실 현 했 는 지 전혀 알 필요 가 없다. 공장 안의 방법 을 호출 하여 대상 을 얻 으 면 된다. 그러면 '포장 격 리' 를 실현 할 수 있다. 아마도 우 리 는 공장 류 로 이동 하 는 것 이 아니 라 공장 류 로 이동 할 수 있 지만 우 리 는 충분히 일 을 할 수 있다. 공장 류 를 포장 하면 대외 적 으로 표시 하지 않 고 호출 방법 만 제공 하면 클래스 와 클 라 이언 트 간 의 결합 성 을 약화 시 킬 수 있다.       위 에 서 는 기본 적 인 간단 한 공장 디자인 모델 이 완성 되 었 고 감성 적 인 인식 을 가 질 수 있 습 니 다. 그러나 간단 한 공장 디자인 모델 은 이 뿐만 이 아 닙 니 다. 이것 은 우리 가 포장 을 실현 하고 자 하 는 모든 종 류 를 제공 할 수 있 고 우리 가 들 어 온 매개 변수 에 따라 선택 적 으로 돌아 갈 수 있 습 니 다. 우 리 는 매번 새로운 실현 을 배치 파일 에 기록 할 수 있 습 니 다.공장 에서 프로필 반사 생 성 실현 클래스 를 읽 는 것 은 더 좋 은 확장 방법 입 니 다.이것들 은 우리 가 모두 프로젝트 에서 사용 하여 우리 의 프로젝트 를 더욱 완벽 하 게 할 수 있다.
 
         이 블 로 그 를 보고 지난 번 의 시간 을 다시 한 번 보면 공간 에 먼지 가 가득 한 것 같 습 니 다. 그 중에서 몇 번 의 블 로 그 는 이미 쓰 여 있 지만 생존 시간 은 10 초 를 넘 지 않 고 지 워 집 니 다...자신 도 왜 그런 지 모 르 겠 습 니 다. 지금 은 항상 답 을 원 합 니 다. 기술 에 대한 것 이 아니 라 이 단계 에 대한 것 입 니 다. 인물 전 기 를 보고 자신 에 게 원 하 는 답 을 주 고 싶 지만 찾 는 과정 에서 손 에 쥐 고 있 는 일 을 끌 어 내 렸 습 니 다. 아마 모든 사람 이 이런 시간 을 가 졌 을 것 입 니 다.계속 답 을 찾 지만 기술 을 잘 해라!

좋은 웹페이지 즐겨찾기