디자인 모드 학습 노트:02 단순 공장 모드
송신 인터페이스 정의
public interface Sender {
public void Send();
}
그리고 실현된 두 가지 문자 발송과 메일 발송
public class MailSender implements Sender {
@Override
public void Send() {
System.out.println("this is mail sender!");
}
}
문자 메시지 보내기
public class SmsSender implements Sender {
@Override
public void Send() {
System.out.println("this is sms sender!");
}
}
공장 건설
public class NormalFactory {
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) {
normalFactory();
// multiFactory();
// staticFactory();
}
//
private static void normalFactory() {
NormalFactory factory = new NormalFactory();
Sender sender = factory.produce("sms");
sender.Send();
}
//
private static void multiFactory() {
MultiFactory factory = new MultiFactory();
Sender sender = factory.produceMail();
sender.Send();
}
//
private static void staticFactory() {
Sender sender = StaticFactory.produceMail();
sender.Send();
}
}
물론 제품이 많으면 이렇게 쓰는 것은 비효율적이며, 여러 공장 방법 모델을 사용한다
public class MultiFactory {
public Sender produceMail() {
return new MailSender();
}
public Sender produceSms() {
return new SmsSender();
}
}
또는 정적 방식 사용
public class StaticFactory {
public static Sender produceMail() {
return new MailSender();
}
public static Sender produceSms() {
return new SmsSender();
}
}
호출 방법은 테스트 클래스에서 장면의 이해를 사용한다. 예를 들어 서로 다른 모듈이 네트워크 요청에 대해 정적 방식으로 서로 다른 모듈의 네트워크 요청을 창조하여 실현할 수 있다.공장 클래스는 항상 이 추상 클래스로 돌아간다. 그러면 원래의 기능을 변경하거나 새로운 기능을 추가하면 원래의 다른 클래스도 수정하지 않는다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.