2017-12-11 29 views
0

안녕하세요 "활동", "서비스"와 안드로이드에서 "FragmentActivity"의 하위 클래스를 필요로하는 매우 복잡한 응용 프로그램을 (그러나이 질문은 물론 순수 자바로 여전히 유효)다른 클래스간에 코드를 공유하는 방법은 무엇입니까?

enter image description here

3 각 클래스는 "My Layer"의 유틸리티 세트로 확장됩니다. 토스트 나 특정 설정을 처리하거나 디스크의 파일을 읽는 특정 방법을 표시하는 특정 방법.

지금까지는 모든 세 가지 유형의 클래스에 대해 (MyUtilities) 공용 을 만들었습니다.

public class MyActivity extends Activity implements MyUtilities 
    public class MyFragmentActivity extends FragmentActivity implements MyUtilities 
    public class MyService extends Service implements MyUtilities 


    public class MyActivity1 extends MyActivity 
    public class MyFragmentActivity1 extends MyFragmentActivity 
    public class MyService1 extends MyService 

하지만 이것은 내가 인터페이스의 필드와 메소드를 정의 할 수 없기 때문에 나 복사를 종료하고 3 개 클래스의 일반적인 방법을 붙여 넣기합니다. 그렇게 할 수있는 더 좋은 방법이 있습니까? 코드 복사는 오랜 기간 동안 매우 오류가 발생하기 쉽습니다.

나는 추상 클래스를 보았지만이 경우에 어떻게 사용하는지 모르겠습니다. 이상적으로는 그것을 필요로 무엇을 분명히 허용되지 않는

public class MyActivity extends Activity, MyUtilities 

처럼 "이중 확장"하지만 이는 내 문제를 해결할 것입니다.

아이디어를주세요.

감사합니다.

PS : here'a에게 간단한 예로서 요청 목적지

가능한 I 이미 일반적인 클래스에 정적 방법을 사용하고있다. 3 각 객체 구성 필드를 지원할 수 있어야하고 각각 포함하는 인터페이스로가는

private Configuration config 

public Configuration getConfiguration(){return config;} 

public void setConfiguration(Configuration cfg){this.config=cfg;} 

다음은 방법이 존재하지만 여전히 어떤 I 돈을 복사 및 붙여 넣기 코드해야한다는 요구에 도움이 정말 좋아하지 않아.

+0

더 많은 코드를 공유하십시오. 대답은 분리 된 클래스의 메서드에서 논리를 추출하는 것입니다. 그러나 더 나은 도움을 받으려면 코드를 공유하십시오. – Ele

+0

감사합니다. 기본 텍스트에 간단한 예제를 추가했습니다. – Lele

답변

0

이 방법에서보세요 :

아이디어는 의지가 Activity을 확장하고 MyUtilities 인터페이스를 구현하여 Custom Activity 클래스를 만드는 것입니다. 이렇게하면 Android 레이어는 사용자 정의 클래스를 Activity로, 계층을 MyActivity로, MyUtilities으로 인식합니다.

public class CustomActivity extends Activity implements MyUtilities { 
    private Configuration config 

    public Configuration getConfiguration(){return config;} 

    public void setConfiguration(Configuration cfg){this.config=cfg;} 
} 

안드로이드 레이어 Activity로 클래스 MyActivity의 인스턴스를 이해할 것이다.

레이어는 MyActivity 클래스의 인스턴스를 CustomActivity 및 MyUtilities로 인식합니다.

public class MyActivity extends CustomActivity { 

} 

희망이 있습니다.

+0

감사합니다. 내가 할 때의 문제는 예를 들어 같은 것을하려고 할 때입니다.이 경우 CustomActivity를 확장 할 수없는 서비스. 아니면 내가 뭔가를 놓친거야? – Lele

+0

어쩌면 데코레이터 패턴을 사용해 볼 수 있을까요? –