23가지 디자인 모델의 간단한 공장 모델
단순 공장 모델은 유형의 창설형 모델에 속하고 정적 공장 방법 모델이라고도 부른다.하나의 클래스를 전문적으로 정의함으로써 다른 클래스의 실례를 만드는 것을 책임진다. 만들어진 실례는 모두 공통된 부류를 가지고 있다.
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!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.