동일한 타사 장치의 두 C 라이브러리가 있습니다. 차이점은 다른 라이브러리 (라이브러리 B)보다 더 많은 기능을 가진 라이브러리 (라이브러리 A)입니다. 이 장치를 사용하는 두 개의 큰 플랫폼이 있습니다. 플랫폼 A는 라이브러리 A를 사용하고 플랫폼 B는 라이브러리 B를 사용합니다.자바 디자인 : Decouple JNI 라이브러리
더 많은 플랫폼과 시스템을 지원하려면 장치 기능 호출의 웹 서비스 (예 : SOAP)를 작성해야합니다. 그렇다면 기존 함수 인터페이스를 변경하지 않는 라이브러리를 변경하더라도 대형 플랫폼에서 다시 컴파일 할 필요가 없습니다. 또한 새로운 플랫폼이 도입되면 라이브러리와 웹 서비스를 재사용 할 수 있습니다. - SOAP -
플랫폼 <> 경량 웹 서버 < - JNI -> 장치 라이브러리
이 좋은 디자인 : 디자인은 같다? 어떤 단점이 있니?
두 개의 라이브러리가 있으므로 두 라이브러리를 모두 지원하는 단일 Java 클래스를 만들 수 있습니까? 그렇다면 어떻게 구현되지 않은 메서드를 처리 할 수 있습니까?
미리 조언 해 주셔서 감사합니다.
답장을 보내 주셔서 감사합니다. 접근 방식은 플랫폼 A -> 비즈니스 클래스 A -> JNI 클래스 A -> 라이브러리 A로 들립니다. 플랫폼 B-> 비즈니스 클래스 B-> JNI 클래스 B-> 라이브러리 B. 클래스 A와 B가 반복되어 코드 재사용에 위배됩니다. 또한 C 라이브러리를 직접 호출하는 것이 아니라 웹 서비스와 같은 표준 방식으로 다른 시스템을 통합 할 가능성이 높기 때문에이 접근법은 타사 프로그램을 처리 할 수 없습니다. 우리의 상황은 기계의 수가 매우 많다는 것입니다. 웹 서비스에 대한 비평가가 유효합니다. 이 서비스를 처리하려면 서비스가 동일한 시스템에 설치되어 있고 부팅 할 때 시작해야합니다. –