320x100
Android에서 많이 사용하는 디자인 패턴에 대해 조사를 해 봤다.
요즘 이직한 회사에서 Java로 개발해야 타업체 호환성이 좋다고 해서 예제코드 준비는 둘 다!!
Android 앱 개발에서 널리 사용되는 디자인 패턴들은 다음과 같습니다:
Model-View-Presenter (MVP) 패턴
- 이 패턴은 뷰, 모델, 프레젠터 간의 책임을 명확하게 분리합니다.
- 프레젠터는 뷰와 모델 사이의 중간자 역할을 하며, 뷰는 프레젠터의 구현 세부 사항을 모르게 됩니다.
- 이를 통해 테스트 가능성이 높아지고 코드 유지보수가 용이해집니다.
Java 예제:
// View 인터페이스
public interface MainView {
void showData(String data);
}
// Presenter 클래스
public class MainPresenter {
private MainView view;
private Model model;
public MainPresenter(MainView view, Model model) {
this.view = view;
this.model = model;
}
public void loadData() {
String data = model.getData();
view.showData(data);
}
}
// Model 클래스
public class Model {
public String getData() {
return "Sample Data";
}
}
Kotlin 예제:
// View 인터페이스
interface MainView {
fun showData(data: String)
}
// Presenter 클래스
class MainPresenter(private val view: MainView, private val model: Model) {
fun loadData() {
val data = model.getData()
view.showData(data)
}
}
// Model 클래스
class Model {
fun getData(): String {
return "Sample Data"
}
}
Model-View-ViewModel (MVVM) 패턴
- 이 패턴은 뷰, 모델, 뷰모델 간의 책임을 명확하게 분리합니다.
- 뷰모델은 뷰와 모델 사이의 중간자 역할을 하며, 뷰는 뷰모델의 구현 세부 사항을 모르게 됩니다.
- 이를 통해 테스트 가능성이 높아지고 코드 유지보수가 용이해집니다.
Java 예제:
// View 인터페이스
public interface MainView {
void showData(String data);
}
// ViewModel 클래스
public class MainViewModel extends ViewModel {
private MutableLiveData<String> data = new MutableLiveData<>();
public LiveData<String> getData() {
return data;
}
public void loadData() {
data.setValue("Sample Data");
}
}
// Activity 클래스
public class MainActivity extends AppCompatActivity implements MainView {
private MainViewModel viewModel;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
viewModel = new ViewModelProvider(this).get(MainViewModel.class);
viewModel.getData().observe(this, this::showData);
viewModel.loadData();
}
@Override
public void showData(String data) {
// 데이터 표시
}
}
Kotlin 예제:
// View 인터페이스
interface MainView {
fun showData(data: String)
}
// ViewModel 클래스
class MainViewModel : ViewModel() {
private val _data = MutableLiveData<String>()
val data: LiveData<String> = _data
fun loadData() {
_data.value = "Sample Data"
}
}
// Activity 클래스
class MainActivity : AppCompatActivity(), MainView {
private val viewModel by viewModels<MainViewModel>()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
viewModel.data.observe(this, ::showData)
viewModel.loadData()
}
override fun showData(data: String) {
// 데이터 표시
}
}
반응형
'개발 이야기 > Android (안드로이드)' 카테고리의 다른 글
Android DataBinding과 ViewModel 적용하기 (6) | 2024.12.12 |
---|---|
Fragment 효율적인 코딩 방법에 대한 정리 (0) | 2024.12.12 |
Java8 Stream API 찍먹하기 (2) | 2024.12.11 |
Android RecyclerView를 이용한 페이징 기법정리 (0) | 2024.06.26 |
Android | Java | 특정 소수점까지 잘라서 계산 후 반올림 하기 (0) | 2024.01.31 |
Android | 앱 화면 구성 중에 DB에서 Data 읽어올때 코딩 가이드 (0) | 2023.12.28 |
Android | 스마트폰 설치한 앱의 APK 추출방법 (0) | 2023.12.13 |
JAVA | Stream 에 대해 궁금점 정리 (0) | 2023.09.10 |