2017-11-28 8 views
2

문제 : 우리는 각각 다른 방법을 구현하고 일부는 또한 자신을 구현하기 위해 서로의 방법을 사용하는 여러 클래스 파일 (~ 200 +)를 가지고 행동 양식.여러 클래스를 참조하는 하나의 자바 클래스/인터페이스를 구현

코드에서 이러한 클래스 메서드 (~ 20-30)를 여러 개 호출하고 UI 웹 페이지에 쓰고 웹 페이지에서 읽는 것과 같은 기능을 제공 할 수 있습니다.

우리는이 과정을 간단하게하기 위해 이러한 여러 클래스 참조 (~ 200 +)를 모두 포함하는 단일 클래스/인터페이스를 원하며 코드에서이 단일 클래스/인터페이스를 가져 오거나 포함해야합니다. 클래스 파일의 모든 메소드를 참조하는 데 사용합니다.

질문 : 위 내용을 사용할 수 있습니까? 그렇다면 어떻게 - 클래스 또는 인터페이스 또는 다른 것을 사용합니까?

내가 예, 우리가 여기에 시도 어떤 정보를 제공하고 있습니다 : 기본적으로 Implement multiple classes in the same interface in Java?

을, 우리는

  • 가 만들기에 선언 된 다른 모든 클래스가 클래스 만들기
    1. 을 시도 여러 클래스 (위에서 언급 한 ~ 200 +)에서 구현 된 인터페이스
    2. 클래스 및 인터페이스 구현

    아무렇지도 않게 작동하는 것 같습니다.

    코드에서 원하는 것의 요지로 아래 예를 제공하십시오. 나는 "ABC_FamilyGivenName 불리는이 개 수업을

    :

    예제 (오른쪽 코드 나 구현하지 , 그냥 우리가 코드에서 수행 할 작업의 예를 제공하기 위해 원) "&"ABC_DOBGender ". "Common"인터페이스를 만들었습니다.

    클래스 "Application"의 코드에서 위의 두 클래스의 메소드를 사용하고 싶습니다. 현재 구현으로

    는, 자바는 ABC_FamilyGivenName ABC_DOBGender & 모두에 @Override를 추가하는 저를 원한다. 우리는 ~ 500 개의 메소드가 있으면 오버 헤드를 다시 생성하므로 c ~ 200 클래스 파일 각각에서 ~ 500을 모두 오버라이드해야합니다. ??

    ***INTERFACE***: 
    
    public interface Common { 
        void ABC_GivenNames(); 
        void ABC_FamilyNames(); 
        void ABC_Gender(); 
        void ABC_BirthDay(); 
    } 
    
    
    
    ***IMPLEMENTATION CLASSES***: 
    
    **ABC_FamilyGivenName** 
    public class ABC_FamilyGivenName extends Base implements Common { 
    
        public void ABC_GivenNames(){ 
         // Implementation code 
        } 
    
        public void ABC_FamilyNames(){ 
         // Implementation code 
        } 
    } 
    
    **ABC_DOBGender** 
    public class ABC_DOBGender extends Base implements Common { 
    
        public void ABC_Gender(){ 
         // Implementation code 
        } 
    
        public void ABC_BirthDay(){ 
         // Implementation code 
        } 
    } 
    
    
    
    **USE IMPLEMENTED CLASS IN CODE**: 
    public class Application extends Base { 
    
        Common commonClass = new ABC_FamilyGivenName(); 
        /* *DO I NEED THIS? I THINK I DO, BUT CODE/JAVA SAYS I DO NOT* 
        * Common commonClass = new ABC_DOBGender(); 
        */ 
    
        public void ELP_C0050_PassportDetails(){ 
         commonClass.ABC_GivenNames(); 
         commonClass.ABC_FamilyNames(); 
         commonClass.ABC_DOB(); 
         commonClass.ABC_Gender(); 
        } 
    } 
    
  • +0

    코드를 잘 이해하지 못하는 한 가지는 성별 및 familyname 구현이있는 "공통점"이 있다는 것입니다. 인터페이스는 유사하지만 다른 클래스에 공통 메소드를 구현하는 데 사용됩니다. 따라서 두 클래스 모두에 하나의 클래스가 있거나 각각에 대해 두 개의 별도 인터페이스가있는 것이 더 합리적입니다. 인터페이스는 두 구현 클래스가 모두 재정의 된 추상 메소드를 갖도록합니다. – SynchroDynamic

    +0

    @SynchroDynamic 그렇습니다. 이것은 우리가 생각한 것일 뿐이지 만 우리 문제에 대한 해결책은 아닙니다. 필자가 제공 한 코드는 우리가 우리 문제에 대한 해결책으로 필요로하는 것을하지 않으며, 사용자가 사용하기 쉽고 여러 클래스를 기억하지 않고 가져 와서 인스턴스화하는 방식으로 구현하려는 아이디어를 얻을 수 있기를 바랬다. as new() – gagneet

    +0

    실례로, 내가 생각한 바를 기반으로 구성 요소 클래스를 작성하는 것을 고려해야합니다. 이렇게하면 특정 객체 유형을 얻기위한 인터페이스를 구축 할 수 있습니다. 예를 들어 기쁘게 생각합니다. 도움이 될 수 있습니다. 그렇지 않을 수도 있습니다. – SynchroDynamic

    답변

    1

    이렇게 많이 할 수 있습니다. 그러나 이것은 제가 이야기 한 것의 아주 간단한 예입니다. 인터페이스 대신 인터페이스를 연결하십시오.

    //Component Classes 
    
    public class DOBGender {//Has the specific methods you want 
    
    } 
    
    
    
    public class FamilyGivenName {//Has the specific methods you want 
    
    } 
    
    //Then just plug them in to this class 
    
    public class Person { 
    
        DOBGender dobGender; 
        FamilyGivenName fgn; 
    
        public Person(DOBGender dobGender, FamilyGivenName fgn) {//Plug them in 
         this.dobGender = dobGender; 
         this.fgn = fgn; 
        } 
    
        public DOBGender getDobGender() { 
         return dobGender; 
        } 
    
        public void setDobGender(DOBGender dobGender) { 
         this.dobGender = dobGender; 
        } 
    
        public FamilyGivenName getFgn() { 
         return fgn; 
        } 
    
        public void setFgn(FamilyGivenName fgn) { 
         this.fgn = fgn; 
        } 
    } 
    

    이전에 말했듯이 훨씬 복잡한 방법으로 만들 수 있지만 너무 많은 클래스를 약간 더 쉽게 코딩 할 수 있습니다. 이것이 당신이 가고 싶지 않은 경로라면, 나는 이것을 삭제하고 새로운 접근법을 취할 수 있습니다. 이 아이디어를 연장하기를 원하면 나는 그렇게 할 수 있습니다.

    이 정보가 도움이되기를 바랍니다.

    편집 :

    이 내가 방금 사람을 호출하고 구성 요소 방법을 사용하여 시작하려는 경우를 참조하고있는 무슨이다.

    +0

    감사합니다. 덕분에 많은 도움이되었습니다. 최종 사용자가이를 더 간단하게 만들 수있는 방법이 있습니까? 기본적으로 생성자를 제거하고 선언하고 2 클래스/메서드를 사용할 수 있습니까? – gagneet

    +0

    항상 생성자를 제거한 다음 세터를 사용하여 속성을 설정할 수 있습니다. 원할 경우 Person 클래스 내에서 인스턴스화 할 수도 있습니다. 이렇게하면 Person 클래스를 호출 할 수 있습니다. 그러면 Person 클래스가 두 객체를 만듭니다. 당신은 당신이 찾고있는 결과를 얻을 것이라고 생각합니다. – SynchroDynamic

    +1

    나는 사람에게 추가적인 클래스 개념을 추가했다. 이렇게하면 구성 요소를 즉시 사용할 수 있습니다. 여기에있는 유일한 경고는 당신이 이렇게하면, 미래에 당신이 뭔가를 바꿔야한다면 훨씬 더 단단 할 것입니다. – SynchroDynamic