이에 대한 내부 정적 클래스없이 유창 빌더 패턴을 사용하여 내가 Passing 1 to many parameters of same object type워크 플로우
에서 일하는 내가 그 좋은 피드백을 늘어 놓던에서 연속이다, 나는 내가 디자인을 개선 믿습니다. 전체 코드는 요구 사항은 간단 https://github.com/spakai/flow_input_builder
에있다 : -
내가 이전 워크 플로우
내가 인터페이스
의 세트가 1 개 이상의 출력을 사용하여 다른 워크 플로우의 입력의 집합을 구축해야 지금public interface SwfInput {
}
public interface SwfOutput {
}
public interface Workflow<I extends SwfInput, O extends SwfOutput> {
public O execute(I input);
}
public interface Builder<I extends SwfInput> {
public I build();
}
는 I가 순차적으로 실행 도착 3 명 흐름을 말한다 FlowA-> FlowB-> FlowC
FlowC m은 필요 andatory FlowB 출력하지만은 임의로
는 그래서 FlowCBuilder
대한 구현을 FlowA 에서 내가 작성한public class FlowCInputBuilder implements Builder<FlowCInput> {
private final FlowBOutput mandatoryflowBOutput;
private FlowAOutput optionalflowAOutput;
public FlowAOutput getOptionalflowAOutput() {
return optionalflowAOutput;
}
public FlowCInputBuilder setOptionalflowAOutput(FlowAOutput optionalflowAOutput) {
this.optionalflowAOutput = optionalflowAOutput;
return this;
}
public FlowCInputBuilder(FlowBOutput mandatoryflowBOutput) {
this.mandatoryflowBOutput = mandatoryflowBOutput;
}
@Override
public FlowCInput build() {
FlowCInput input = new FlowCInput();
input.setMandatoryFromFlowB(mandatoryflowBOutput.getOutput1FromB());
if (optionalflowAOutput != null) {
input.setOptionalFromFlowA(optionalflowAOutput.getOutput2FromA());
}
return input;
}
}
한 시험
FlowBOutput mandatoryflowBOutput = new FlowBOutput();
mandatoryflowBOutput.setOutput1FromB("iNeedThis");
FlowAOutput optionalflowAOutput = new FlowAOutput();
FlowCInput input = new FlowCInputBuilder(mandatoryflowBOutput)
.setOptionalflowAOutput(optionalflowAOutput)
.build();
제가 사용되지 않은 사용 예를 정적 내부 클래스를 도시 빌더 패턴.
모든 의견을 환영합니다.
여기에 질문이 있습니까? – scottb
아, 질문은 디자인이 의미가 있는지 여부와이 작업을 수행하는 더 좋은 방법이 있는지 여부 및 빌더 패턴에서 정적 내부 클래스를 사용하지 않는 것이 맞습니까? – spakai
정적 멤버 클래스는 모든 의도와 목적에 대해 최상위 클래스와 동일합니다 (패키징의 편의를 위해 방금 이동 한 것입니다). 따라서 실제 최상위 클래스를 빌더로 사용하려면 이동하십시오. 많은 사람들은 빌더가 객체를 만드는 클래스와 만 작동하기 때문에 그 클래스의 정적 멤버 클래스로 가장 잘 패키징되어 있다고 말합니다. 그러나 당신은 당신이 원하는대로 할 수 있습니다. – scottb