예를 들어 여러 액티비티에서 공통적으로 접근해야 하는 URL이 있다거나
SD카드에 저장해야 하는 경로는 한곳에 선언해두고 공통적으로 사용해야
유지관리에 좋을것 같습니다.
처음에는 그냥 values에 string 리소스에 두고 관리할까했지만
URL의 경우 내 서버 주소이기 때문에 그냥 막 보여주기 좀 껄끄러운 부분이 있고..
여러가지 면에서 막보여주기 좀 그런 데이터의 경우가 있을수 있는데요..
그래서 제가 생각하기론 공통적으로 사용되는 변수를 모아 interface로 만들고 이를 필요로 하는 activity에서
implements 하는걸 생각했는데..
이게 좋은 방법일지 모르겠습니다.
물론 디컴파일러 돌리면 어떻게든 알아낼수 있겠지만 적어도 리소스처럼 그냥 쉽게 볼수있게 하고싶지는 않아서요
액티비티별로 하드코딩으로 적어뒀더니 이거 수정하려니 짜증나네요 ㅠ
전 ConstValue 라는 클래스를 만들어서 각 기능별로 이너클래스 하나 만들어서 그 안에다가 각 기능별 값 을 정의합니다..
아래와 같이 표현되죠
public class ConstValue{ public class Login{ public final static int WHAT_LOGIN_SUCCESS = 100; public final static int WHAT_LOGIN_FAIL = 101; } }
이렇게요..
구글 샘플 코드들이 다 이런식으로 되어 있더군요
그래서 아 이거 괜찮네 하고 이렇게 씁니다.
물론 싱글톤 객체가 필요한 경우는 다르겠지만요.
답변 감사합니다 ~
디자인패턴 공부를 안해봐서 이런게 항상 걸리네요 ㅠ
죄송한데 위의 경우 사용시 어떤식으로 사용을 해야 하는지요... ㅠ
static 클래스가 아니니 객체 생성을 하고 사용을 해야 하나요?
죄송한데 한가지 질문을 더 드리면..
static으로 하면 객체 생성을 안해도 된다는 장점때문에 전 보통 공통적으로 사용하는 기능에 대해서 public static class Util 을 만들어
기능을 메서드로 만들어 사용하는데요.
음..예를 들어 파일 다운로드가 필요할 경우
public static boolean fileDownload(String addr, String savePath) 이런식으로요
그럼 사용하는 각 액티비티에선 Util.fileDownload(주소, 저장경로) 로 불러쓰는데요..
이런 방식은 괜찮은건지 궁금합니다.
그냥 변수는 static 으로 선언되어 있으니 그냥 사용하시면 되요
ConstValue.Login.WHAT_LOGIN_SUCESS 로 호출해서 쓰면 되지요
제가 쓴 코드의 예제는 주로 Handler 에서 case 검출할 때 사용하는 코드들이에요
위와 같은 방식도 저도 종종 쓰는 방식이에요
이제 fielDownload 같은 액션은 Http 통신 후 처리까지 포함시키고자 하면 Command 패턴 같은것을 응용할 수 있고요.
후처리는 Handler 에서 처리하길 원하면 위와 같이 사용해도 되고요
주로 MVC 로 처리를 할 때 저는 Controller 를 객체 생성해서 쓰기도 하지만 저렇게 static 메쏘드로 호출해서 사용하기도 해요.
일장일단이긴 하지만 파라미터가 많지 않거나 AlertDialog 생성 같은 조금 기능이 떨어지는 경우에 주로 사용해요.
뭐 결론은 취향이고요
위와 같이 쓰셔도 성능상 무리는 없습니다.