-1

Java 응용 프로그램을 사용하여 프로세스를 구현할 계획입니다. 프로세스는 다양한 단계를 거칩니다. 각 단계마다 입출력이 있습니다.사용자 정의 할 수있는 내 자신의 Java 응용 프로그램

는 그래서 입력 1 => 1 위상 => outpu1 => 2 위상 => 출력 2 => 페이즈 같은 것입니다 => final_output

나는 사용자가 구현하는 모든 단계를 확장 할 수있는 자바 응용 프로그램을 작성하려면 자신의 자체 기능.

예 : phase1은 주어진 입력을 정렬합니다. 내 애플 리케이션 사용자가 phase1의 기능을 대체 할 커스텀 클래스를 생성하게하고 싶다. 그들은 분류 대신 계산을하고 싶어 할 수 있습니다.

방법에 대한 아이디어가 있으십니까? 플러그인 아키텍처? 비슷한 방식으로 작동하는 프레임 워크의 예는 무엇입니까? 어디서 시작하나요? 편집 : 입력 한 내용이 사용자의 것입니다. 우리 애플 리케이션이 숫자의 집합을 소요 정렬 (phase1) 다음 중복 제거 (phase2) 및 추가 (phase3) 않습니다 및 출력 제공합니다. 이제 단계를 사용자 지정할 수있게하려고합니다. 아마도 다른 것들을하는 자신의 클래스를 정의하도록 허용함으로써 가능할 것입니다.

+0

지금까지 해보신 것은 무엇입니까? 묻고 싶은 질문이 있습니까? 왜냐하면 이러한 유형의 질문은 일반적으로 SO에 환영받지 못하기 때문입니다. 자세한 내용은 FAQ를 참조하십시오. http://stackoverflow.com/faq –

+0

모호하므로 애매한 질문입니다. 그러나 그 답은 나를 더 분명하게 해줍니다. – anony

답변

1

솔루션의 생각과 같은 JMS 기반 framwork과 같은 훨씬 더 복잡한 무언가 또는 무언가를 사용하여 구현할 수 : 단계는 구현 될 수있는 프로세스() 메소드와 인터페이스 것 연산. 이 process() 메서드는 Output 반환 유형을 가질 수 있고 다른 출력을 매개 변수로 가져올 수 있으며 Output은 다른 유형 (클래스 또는 인터페이스)을 가질 수 있습니다. 그리고 각 단계의 반환 출력을 다음 단계의 입력으로 사용하여 단계 목록을 사용하여 execute() 메소드로 전체 프로세스를 실행할 Executor 클래스. 유일하게 열려있는 질문은 다음과 같습니다. 첫 번째 단계의 입력은 무엇입니까?

+1

더 많은 아이디어를 얻을 수있었습니다. 덕분에 많이 – anony

1

귀하의 질문은 너무 모호합니다. 한 가지 방법으로 공통된 인터페이스를 사용하여 구현할 수 있습니다.

"단계"또는 단계가 동시에 발생할 수없는 특별한 이유가 있습니까?

또는 당신은 SEDA

+0

각 단계가 이전 단계의 출력을 필요로하는 경우 여러 단계를 동시에 처리하는 방법을 볼 수 없습니다 ... –

+1

각 단계에 전체 출력이 필요하면 yes입니다. 그러나 입력이 완전히 생성되기 전에 입력을 처리 할 수있는 경우가 종종 있습니다. 예 : 생각 해보세요. 'grep word file | grep -v stopword | 절단 -d/-f2 | 정렬 | 유니크 -c | sort -n | 꼬리' –

+0

재미있는 생각.당신이 할 수있는 패턴을 아십니까? –

2

귀하의 질문은 프레임 워크를 제공하기에는 너무 일반적이라고 생각합니다. 즉, Strategy Pattern (more here)을 살펴볼 수 있습니다.

패턴의 목적은 동작을 정의한 다음 이러한 동작을 메서드 매개 변수로 전달하는 것입니다. 이렇게하면 통과 한 매개 변수의 유형에 따라 여러 가지 작업을 수행하는 하나의 메소드를 가질 수 있습니다.

제 생각에 동일한 방법을 사용하면 정렬 및 계산을 수행하면 문제가 발생합니다. 이상적으로, 각 메소드는 적어도 비슷한 연산을 수행해야합니다. 정렬을 위해서는 오름차순 및 내림차순 정렬을 수행 한 다음 계산을 수행하는 다른 방법을 사용할 수 있습니다.

+1

복수의 정답을 표시 할 수 없었지만 전략 패턴은 유용했습니다 – anony

+0

@anony : 다행이 당신을 위해 일했습니다 :) – npinti

+0

디자인 패턴에 대해 말하자면, Chain of Responance 패턴을 살펴 봐야합니다. http://en.wikipedia.org/wiki/Chain-of-responsibility_pattern –

관련 문제