본문 바로가기

전체 글

[Android] 아키텍처_Dagger2를 이용한 의존성 주입 의존성 주입(Dependency Injection)이란 ? 하나의 객체에 다른 객체의 의존성을 제공하는 기술을 말한다, DI를 그대로 번역한 의존성 주입이란 단어를 사용하다 보니 이는 좀 어렵게 느껴질 수 있으나, 서로를 필요로 하는 관계라고 이해하면 조금 쉽다. 예를 들어 컴퓨터에 포함되는 CPU가 생성되는 단계부터 단단히 결합되어 있고, 다른 CPU로 변경하고 싶어도 그럴 수 없다. 이를 "Computer가 CPU에 의존성을 갖는다" 고 할 수 있다. 의존성 주입의 장단점 ? 장점 의존성 주입은 인터페이스를 기반으로 설계되며, 코드를 유연하게 한다. 주입하는 코드만 변경하기 쉬워 리팩토링이 수월 단위테스트가 쉬워 진다. ( 가장 큰 장점) 클래스간의 결합도를 낮춘다. 여러개발자가 협업한다고 했을때, .. 더보기
[Android]안드로이드 애플리케이션 설계패턴 일반적으로 안드로이드 애플리케이션을 설계하는 패턴 중 가장 많이 사용되고 비교되는 패턴은 MVC, MVP, MVVP 디자인 패턴이 있다. 1. MVC 디자인 패턴 - 구조를 모델(Model), 뷰(View), 컨트롤러(Controller) 세가지 주요측면으로 분리한다. 1) 모델 : 비지니스로직과 데이터를 다루는 영역이다. 형식에 의존적이지 않고 사용자에게 보이지 않는 영역 : 안드로이드에서는 데이터 베이스의 Entity를 담당하는 POJO 클래스를 포함한 SQLite, Room, Realm등이 해당 2) 뷰 : 사용자에게 보여지는 UI 영역이며 안드로이드에서는 Activity, Fragment등이 속한다. 3) 컨트롤러 : 모델과 뷰에 의존한다. 상황에 따라 데이터를 불러와서 수정하고 전달하는 중간역할.. 더보기
[프로그래머스] 주식가격 (JAVA) 코딩테스트 연습 - 주식가격 | 프로그래머스 (programmers.co.kr) 코딩테스트 연습 - 주식가격 초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요. 제한사항 prices의 각 가격은 1 이상 10,00 programmers.co.kr class Solution { public int[] solution(int[] prices) { int[] answer = new int[prices.length]; for (int i =0; i < prices.length; i++){ int stay_count = 0; for(int j =i+1; j < prices.length; j++.. 더보기
[프로그래머스] 체육복 (JAVA) 코딩테스트 연습 - 체육복 | 프로그래머스 (programmers.co.kr) 코딩테스트 연습 - 체육복 점심시간에 도둑이 들어, 일부 학생이 체육복을 도난당했습니다. 다행히 여벌 체육복이 있는 학생이 이들에게 체육복을 빌려주려 합니다. 학생들의 번호는 체격 순으로 매겨져 있어, 바로 앞번 programmers.co.kr class Solution { public int solution(int n, int[] lost, int[] reserve) { int answer = n; if(lost.length < 1){ return answer; } if(reserve.length < 1 ){ return answer - lost.length; } for(int i=0; i 더보기
[프로그래머스] 문자열 내 마음대로 정렬하기 (JAVA) 코딩테스트 연습 - 문자열 내 마음대로 정렬하기 | 프로그래머스 (programmers.co.kr) 코딩테스트 연습 - 문자열 내 마음대로 정렬하기 문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 ["sun", "bed", "car"]이고 n이 1이면 각 단어의 인덱 programmers.co.kr import java.util.ArrayList; import java.util.Arrays; import java.util.Collections ; class Solution { public String[] solution(String[] strings, int n) { String[] answ.. 더보기
[프로그래머스]K번째 수(JAVA) 코딩테스트 연습 - K번째수 | 프로그래머스 (programmers.co.kr) 코딩테스트 연습 - K번째수 [1, 5, 2, 6, 3, 7, 4] [[2, 5, 3], [4, 4, 1], [1, 7, 3]] [5, 6, 3] programmers.co.kr import java.util.Arrays; class Solution { public int[] solution(int[] array, int[][] commands) { int[] answer = new int[commands.length]; for(int count=0; count 더보기
[책읽기] 부자의 언어 부 란? 경제적안정, 돈 걱정없이 사는 삶 하루의 시간은 모두 하나의 씨앗이 될 수 있다. - 부를 일구는 정원사 돈문제를 해결해야 다른 중요한 것들에 집중 할 수 있다. 돈과 시간이 없으면 자기 인생을 뜻대로 살아갈 수 없게 된다. 돈으로 해결가능한 사소한 일을 처리하지 못해 끔찍한 문제가 될 수 있다. 거둔것들로 하루하루를 판단하지 말아라. 그날 심은 씨앗으로 판단하라. 미래에 대한 확실한 보상은 '그 어디에도 없다'네. 그럼에도 불구하고 우리는 계속 나아가야하지. 그렇지 않으면 이미 가진 것만 가지고 살 수 밖에 없어. 17p - 인생의 가치는 그 길이에 있지 않다. 우리는 하루하루를 사용하여 인생을 만들어 나간다. 오래 살 수 는 있지만, 그렇다고 꼭 많은걸 얻게되지는 않는다. 철학자 몽테뉴 인생.. 더보기
아키텍처_안드로이드설계+클린아키텍처 안드로이드 설계시 주의점 UI컴포넌트에 많은 코드를 작성하는 우를 범하기 쉽다. 코드량이 많아지고 가독성이 떨어질 수 있다. so, 중요한것은 관심사 분리 액티비티와 프래그먼트의 클래스 의존성을 최소화 하는 것이 좋다. 클린아키텍처 로버트 C 마틴에 의해 만들어진 철학 , 소프트웨어의 관심사를 계층별로 분리하는 SW디자인 철학 Entities - 가장 일반적이고 상위수준의 규칙들을 캡슐화 ex) 데이터 클래스 Usecase - 애플리케이션과 관련된 비지니스 규칙을 포함하고 시스템의 모든 유스케이스 구현체들을 캡슐화 한다. Ex ) Model , Repository, Executor클린아키텍처 Interface Adapter- 액티비티, 프레그먼트, 인텐트전달 , 그리고 데이터에 접근하고 저장하는 데이터베.. 더보기