분류 전체보기161 프론트 컨트롤러 패턴과 도입 - v1, View 분리 - v2 프론트 컨트롤러 도입 전 프론트 컨트롤러 도입 후 FrontController 패턴 특징 프론트 컨트롤러 서블릿 하나로 클라이언트의 요청을 받음 프론트 컨트롤러가 요청에 맞는 컨트롤러를 찾아서 호출 입구를 하나로 공통 처리 가능 프론트 컨트롤러를 제외한 나머지 컨트롤러는 서블릿을 사용하지 않아도 됨 프론트 컨트롤러 도입 - v1 프론트 컨트롤러를 단계적으로 도입해보자. 이번 목표는 기존 코드를 최대한 유지하면서, 프론트 컨트롤러를 도입하는 것이다. 먼저 구조를 맞추어두고 점진적으로 리펙터링 해보자. ControllerV1 (interface) 서블릿과 비슷한 모양의 컨트롤러 인터페이스를 도입한다. 각 컨트롤러들은 이 인터페이스를 구현하면 된다. 프론트 컨트롤러는 이 인터페이스를 호출해서 구현과 관계없이 .. 2022. 4. 3. 수열 추측하기(순열, 파스칼 응용) 인프런 김태원님의 파이썬 알고리즘 문제풀이를 듣고 작성한 글입니다. https://inf.run/Wa5t 파이썬 알고리즘 문제풀이 (코딩테스트 대비) - 인프런 | 강의 파이썬을 이용한 코딩테스트 문제풀이를 합니다., - 강의 소개 | 인프런... www.inflearn.com 이 문제가 좀 어려웠다.. 내 풀이 #내 풀이 //테스트 1,4는 통과하는데 나머지는 시간초과 def DFS(L): global res ch = pascal(n) if L == n: if len(res) != len(set(res)): pass else: ssum = 0 for i in range(len(res)): ssum += res[i] * ch[i] if ssum == f: for j in res: print(j, end .. 2022. 4. 2. 순열 구하기 (DFS) 인프런 김태원님의 파이썬 알고리즘 문제풀이를 듣고 작성한 글입니다. https://inf.run/Wa5t 파이썬 알고리즘 문제풀이 (코딩테스트 대비) - 인프런 | 강의 파이썬을 이용한 코딩테스트 문제풀이를 합니다., - 강의 소개 | 인프런... www.inflearn.com 내 풀이 #내 풀이 //답은 맞음 def DFS(L): global res, cnt if L == m: if len(res) != len(set(res)): pass else: for i in res: print(i, end = ' ') print() cnt += 1 else: for i in range(1, n+1): res[L] = i DFS(L+1) if __name__ == "__main__": n, m = map(int,.. 2022. 4. 2. 동전 교환 (Cut Edge Tech) 인프런 김태원님의 파이썬 알고리즘 문제풀이를 듣고 작성한 글입니다. https://inf.run/Wa5t 파이썬 알고리즘 문제풀이 (코딩테스트 대비) - 인프런 | 강의 파이썬을 이용한 코딩테스트 문제풀이를 합니다., - 강의 소개 | 인프런... www.inflearn.com #강의 풀이 def DFS(L, sum): global res if L > res: return if sum > m: return if sum == m: if L < res: res = L else: for i in range(n): DFS(L+1, sum+a[i]) if __name__ == "__main__": n = int(input()) a = list(map(int, input().split())) m = int(inpu.. 2022. 4. 2. 중복순열 구하기(DFS) 인프런 김태원님의 파이썬 알고리즘 문제풀이를 듣고 작성한 글입니다. https://inf.run/Wa5t 파이썬 알고리즘 문제풀이 (코딩테스트 대비) - 인프런 | 강의 파이썬을 이용한 코딩테스트 문제풀이를 합니다., - 강의 소개 | 인프런... www.inflearn.com #강의 풀이 def DFS(L): global res, cnt if L == m: for i in res: print(i, end = ' ') print() cnt += 1 else: for i in range(1, n+1): res[L] = i DFS(L+1) if __name__ == "__main__": n, m = map(int, input().split()) res = [0] * m cnt = 0 DFS(0) print(.. 2022. 4. 2. MVC 패턴의 장점과 단점, 한계 MVC 패턴의 등장 비즈니스 로직은 서블릿 처럼 다른곳에서 처리하고, JSP는 목적에 맞게 HTML로 화면(View)을 그리는 일에 집중하도록 하자. 과거 개발자들도 모두 비슷한 고민이 있었고, 그래서 MVC 패턴이 등장했다. MVC 패턴 개요 너무 많은 역할 하나의 서블릿이나 JSP만으로 비즈니스 로직과 뷰 렌더링까지 모두 처리하게 되면, 너무 많은 역할을 하게되고, 결과적으로 유지보수가 어려워진다. 비즈니스 로직을 호출하는 부분에 변경이 발생해도 해당 코드를 손대야 하고, UI를 변경할 일이 있어도 비즈니스 로직이 함께 있는 해당 파일을 수정해야 한다. 변경의 라이프 사이클 사실 이게 정말 중요한데, 진짜 문제는 둘 사이에 변경의 라이프 사이클이 다르다는 점이다. 예를 들어서 UI 를 일부 수정하는 .. 2022. 4. 2. 이전 1 ··· 16 17 18 19 20 21 22 ··· 27 다음