MVC 패턴, 서비스가 콘솔 애플리케이션에서 필요한가?MVC 패턴Model : 애플리케이션의 데이터와 비즈니스 로직 담당View : 사용자에게 보여지는 부분 (데이터의 시각화)Controller : Model로부터 데이터를 받아 View로 전달하는 작업 수행 콘솔 애플리케이션 (블랙잭)화면 요구사항게임에 참여할 사람의 이름을 입력하세요.(쉼표 기준으로 분리)pobi,jason딜러와 pobi, jason에게 2장을 나누었습니다.딜러카드: 3다이아몬드pobi카드: 2하트, 8스페이드jason카드: 7클로버, K스페이드pobi는 한장의 카드를 더 받겠습니까?(예는 y, 아니오는 n)ypobi카드: 2하트, 8스페이드, A클로버pobi는 한장의 카드를 더 받겠습니까?(예는 y, 아니오는 n)njason는 한장의..
Lv1 중간회고우테코를 다닌지 한달이 되었다. 지금까지 생활을 돌아보자. Lv1 기존 목표 : 많은 것을 도전하자우테코에 들어오면서 기존에 내가 가지고 있던 생각을 유연하게 만들고, 아직 도전하지 못한 부분들을 마음껏 도전하고 싶었다.설명회에서 도전하더라도 지지해주고, 응원해주는 환경을 조성해준다고 하였기 때문이다.한달동안 도전을 하고 많은 것이 바뀌었다. 공개적인 곳에서 의견 말하기낯선 크루들과 개발 주제로 이야기할때, 나도 내 의견을 제시할 수 있는 사람이 되고 싶었다. 모두 백엔드 개발이라는 공통점을 가지고 있기 때문이다. 다른 크루들도 의견을 공유하는 것을 좋아하고, 다른 의견을 환영하고 토론하는 분위기였기 때문에 의견을 나누는 과정이 즐거웠다.의견을 말하면서 좀 더 의견을 설득력있게 말할 수 있..
함수형 프로그래밍과 객체 지향 프로그래밍의 교집합경계의 구분 관점내부 세계와 외부 세계를 구분한다.함수형함수형은 데이터, 순수 함수, 비순수함수로 나눠지며, 순수 함수와 비순수 함수의 경계를 구분한다.비순수 함수는 외부 세계라고 볼 수 있고, 순수 함수는 내부 세계라고 볼 수 있다.이는 비순수 함수는 같은 입력에도 실행 시점이나 호출 횟수에 따라 다른 결과가 나오기 때문이다.함수형 프로그래밍은 외부 세계와의 상호작용을 비순수함수에 격리한다. 객체지향핵심 로직 : 순수 함수를 포함한 비즈니스 로직인프라스트럭쳐(외부 시스템 연동) : 비순수 함수를 포함한 외부 세계와의 상호작용비순수 부분을 인터페이스로 추상화public class OrderService { private final OrderReposi..
함수형 프로그래밍수학 함수를 사용하고 부수 효과(side effect)를 피하는 것이 특징인 프로그래밍 패러다임부수 효과 : 함수에서 결과값을 주는 것 외에 하는 행동순수 함수 : 부수 효과 없이 결괏값이 인자에만 의존하는 함수부수 효과 없이 순수 함수만 사용하는 프로그래밍 스타일 실용적 측면에서의 함수형 프로그래밍부수 효과는 필요하다.상태에 따라 결과가 달라질 필요가 있다.함수형 프로그래밍은 부수 효과를 잘 다룰 수 있다.함수형 프로그래밍은 순수하지 않은 함수도 사용하지만 순수하지 않은 함수를 다룰 수 있는 기술도 많이 있다.함수형 프로그래밍은 실용적이다.함수형 프로그래밍은 객체 지향 프로그래밍이나 절차적 프로그래밍을 다루지 않고 모든 프로그래밍에서 사용가능하다. 함수형 프로그래밍에서 순수하지 않은 함..
구조 패턴 - 어댑터어댑터 패턴호환되지 않은 인터페이스가 있는 객체들이 함께 협업할 수 있는 구조 설계 패턴기존 인터페이스를 구현하여 호환이 필요한 객체를 감싸 호환되게 만든다.중간 다리 역할(ex) 전압변환기)을 한다. 문제개발한 주식 시장 모니터링 앱은 XML 형식의 주식 데이터를 다운로드하여 차트와 다이어그램을 표시한다.새로운 데이터 형식을 지원하기 시작한다고 가정할 때 (ex) JSON) 기존 코드를 중단시키지 않고 동작시킬 수 있는 방법이 필요하다. 해결방법 : 어댑터(Adapter) 만들기어댑터 : 다른 객체가 이해할 수 있도록 인터페이스를 변환한다.작성 방법기존 객체 중 하나와 호환되는 인터페이스를 가져온다.어댑터는 새로운 객체를 감싸고 기존 인터페이스를 구현한다.클라이언트는 어댑터가 동작하..
생성 - 프로토타입 패턴프로토타입이란?클래스에 의존하지 않고도 기존 객체를 복사할 수 있는 생성 디자인 패턴 프로토타입이 필요한 이유객체의 정확한 사본을 만들고 싶다면, 먼저 새 객체를 생성하고 기존 객체의 모든 필드의 값을 새 객체로 복사해야한다.만약 객체의 일부가 비공개이고, 외부에서 보이지 않아서 객체를 복사할 수 없다면?또한 객체의 사본을 만들기 위해 기존 객체를 의존하는 것은 좋은 방법이 아니다.만약 기존 객체가 인터페이스를 의존한다면, 정확한 동작을 알기 어려워 복사하기 어렵다. 프로토타입으로 문제 해결하기프로토타입 패턴객체를 복제할 때 new 키워드로 직접 생성하는 것이 아닌, 기존 객체를 복사하여 새로운 객체를 만들자프로토타입은 새 객체가 복사할 객체에 의존하는 것이 아닌, 복사할 객체에 ..
생성 - 빌더 패턴빌더 패턴동일한 인터페이스를 이용하여 여러 종류의 제품을 생성할 수 있다.복잡한 물체를 동일 인터페이스를 이용하여 단계적으로 구현할 수도 있다. 빌더 패턴이 필요한 이유상황여러 종류의 제품을 만들 수 있어야 하는 경우 1. 상속을 이용방법 : 기본 클래스를 확장하여 구현체별 서브 클래스를 생성한다.문제점 : 구현체별 너무 많은 하위 클래스가 생성된다.2. 가능한 경우에 대한 매개변수 생성방법 : 모든 가능한 경우에 대해 생성자에 매개변수를 추가한다.문제점 : 대부분의 경우 대부분의 매개변수가 사용되지 않는다.3. 빌더 패턴 사용하는 경우방법 : 객체 구성 코드를 빌더라는 개별 객체로 옮긴다.장점 : 필요한 단계만 선택하여 객체를 생성할 수 있다. 구조빌더 : 제품 생성의 공통 단계를 인..