23가지 디자인 모델의 간단한 공장 모델

2015 단어
단순 공장 모델
단순 공장 모델은 유형의 창설형 모델에 속하고 정적 공장 방법 모델이라고도 부른다.하나의 클래스를 전문적으로 정의함으로써 다른 클래스의 실례를 만드는 것을 책임진다. 만들어진 실례는 모두 공통된 부류를 가지고 있다.
2. 모델에 포함된 역할과 직책
1. 공장(생성기) 역할?
단순 공장 모델의 핵심은 모든 실례를 만드는 내부 논리를 실현하는 것을 책임진다.공장류는 외부에서 직접 호출되어 필요한 제품 대상을 만들 수 있다.
2. 추상적(제품) 역할?
단순 공장 모드에서 만들어진 모든 대상의 부류는 모든 실례가 공유하는 공공 인터페이스를 설명합니다.
3. 구체적인 제품(Concrete Product) 역할은?
단순 플랜트 모드에서 작성된 특정 인스턴스 객체
3. 단순 공장 모델의 장단점
이 모델에서 공장류는 전체 모델의 관건이다.이것은 외부가 정한 정보에 따라 어떤 구체적인 유형을 만들어야 하는지를 결정하는 데 필요한 판단 논리를 포함한다.사용자는 이 대상이 어떻게 만들어지고 어떻게 조직되는지 알 필요 없이 공장 클래스에 따라 필요한 실례를 직접 만들 수 있다.전체 소프트웨어 체계 구조의 최적화에 유리하다.
단순한 공장 모델의 단점도 공장 유형에 나타난다. 공장 유형은 모든 실례의 창설 논리를 집중했기 때문에'고내집'분야가 잘 되지 않았다.또한 시스템-에서 구체적인 제품류가 계속 증가할 때 공장류도 상응하는 수정을 요구할 수 있어 확장성이 좋지 않다.
예를 들면 다음과 같다.
먼저 공통 인터페이스를 생성합니다.
 
public interface Sender {  
    public void Send();  
}

  
다음으로 구현 클래스를 만듭니다.
public class MailSender implements Sender {  
    @Override  
    public void Send() {  
        System.out.println("this is mailsender!");  
    }  
}  

 
public class SmsSender implements Sender {  
  
    @Override  
    public void Send() {  
        System.out.println("this is sms sender!");  
    }  
}  

마지막으로 공장 건설류:
public class SendFactory {  
  
    public Sender produce(String type) {  
        if ("mail".equals(type)) {  
            return new MailSender();  
        } else if ("sms".equals(type)) {  
            return new SmsSender();  
        } else {  
            System.out.println(" !");  
            return null;  
        }  
    }  
}  

우리가 테스트해 보자.
public class FactoryTest {  
  
    public static void main(String[] args) {  
        SendFactory factory = new SendFactory();  
        Sender sender = factory.produce("sms");  
        sender.Send();  
    }  
}  

출력:this is sms sender!

좋은 웹페이지 즐겨찾기