설계

설계

함수형 프로그래밍과 객체 지향 프로그래밍의 교집합

함수형 프로그래밍과 객체 지향 프로그래밍의 교집합경계의 구분 관점내부 세계와 외부 세계를 구분한다.함수형함수형은 데이터, 순수 함수, 비순수함수로 나눠지며, 순수 함수와 비순수 함수의 경계를 구분한다.비순수 함수는 외부 세계라고 볼 수 있고, 순수 함수는 내부 세계라고 볼 수 있다.이는 비순수 함수는 같은 입력에도 실행 시점이나 호출 횟수에 따라 다른 결과가 나오기 때문이다.함수형 프로그래밍은 외부 세계와의 상호작용을 비순수함수에 격리한다. 객체지향핵심 로직 : 순수 함수를 포함한 비즈니스 로직인프라스트럭쳐(외부 시스템 연동) : 비순수 함수를 포함한 외부 세계와의 상호작용비순수 부분을 인터페이스로 추상화public class OrderService { private final OrderReposi..

설계

함수형 프로그래밍이란?

함수형 프로그래밍수학 함수를 사용하고 부수 효과(side effect)를 피하는 것이 특징인 프로그래밍 패러다임부수 효과 : 함수에서 결과값을 주는 것 외에 하는 행동순수 함수 : 부수 효과 없이 결괏값이 인자에만 의존하는 함수부수 효과 없이 순수 함수만 사용하는 프로그래밍 스타일 실용적 측면에서의 함수형 프로그래밍부수 효과는 필요하다.상태에 따라 결과가 달라질 필요가 있다.함수형 프로그래밍은 부수 효과를 잘 다룰 수 있다.함수형 프로그래밍은 순수하지 않은 함수도 사용하지만 순수하지 않은 함수를 다룰 수 있는 기술도 많이 있다.함수형 프로그래밍은 실용적이다.함수형 프로그래밍은 객체 지향 프로그래밍이나 절차적 프로그래밍을 다루지 않고 모든 프로그래밍에서 사용가능하다. 함수형 프로그래밍에서 순수하지 않은 함..

설계/디자인 패턴

[디자인패턴] 구조 패턴 - 어댑터 패턴

구조 패턴 - 어댑터어댑터 패턴호환되지 않은 인터페이스가 있는 객체들이 함께 협업할 수 있는 구조 설계 패턴기존 인터페이스를 구현하여 호환이 필요한 객체를 감싸 호환되게 만든다.중간 다리 역할(ex) 전압변환기)을 한다. 문제개발한 주식 시장 모니터링 앱은 XML 형식의 주식 데이터를 다운로드하여 차트와 다이어그램을 표시한다.새로운 데이터 형식을 지원하기 시작한다고 가정할 때 (ex) JSON) 기존 코드를 중단시키지 않고 동작시킬 수 있는 방법이 필요하다. 해결방법 : 어댑터(Adapter) 만들기어댑터 : 다른 객체가 이해할 수 있도록 인터페이스를 변환한다.작성 방법기존 객체 중 하나와 호환되는 인터페이스를 가져온다.어댑터는 새로운 객체를 감싸고 기존 인터페이스를 구현한다.클라이언트는 어댑터가 동작하..

설계/디자인 패턴

[디자인패턴] 생성 패턴 - 싱글톤 패턴

스터디 발표 영상 https://www.youtube.com/embed/B2irvGasOHU?si=FMO2-s0UFkROi9Nx YouTube www.youtube.com

설계/디자인 패턴

[디자인패턴] 생성 패턴 - 프로토타입 패턴

생성 - 프로토타입 패턴프로토타입이란?클래스에 의존하지 않고도 기존 객체를 복사할 수 있는 생성 디자인 패턴 프로토타입이 필요한 이유객체의 정확한 사본을 만들고 싶다면, 먼저 새 객체를 생성하고 기존 객체의 모든 필드의 값을 새 객체로 복사해야한다.만약 객체의 일부가 비공개이고, 외부에서 보이지 않아서 객체를 복사할 수 없다면?또한 객체의 사본을 만들기 위해 기존 객체를 의존하는 것은 좋은 방법이 아니다.만약 기존 객체가 인터페이스를 의존한다면, 정확한 동작을 알기 어려워 복사하기 어렵다. 프로토타입으로 문제 해결하기프로토타입 패턴객체를 복제할 때 new 키워드로 직접 생성하는 것이 아닌, 기존 객체를 복사하여 새로운 객체를 만들자프로토타입은 새 객체가 복사할 객체에 의존하는 것이 아닌, 복사할 객체에 ..

설계/디자인 패턴

[디자인패턴] 생성 패턴 - 빌더 패턴

생성 - 빌더 패턴빌더 패턴동일한 인터페이스를 이용하여 여러 종류의 제품을 생성할 수 있다.복잡한 물체를 동일 인터페이스를 이용하여 단계적으로 구현할 수도 있다. 빌더 패턴이 필요한 이유상황여러 종류의 제품을 만들 수 있어야 하는 경우 1. 상속을 이용방법 : 기본 클래스를 확장하여 구현체별 서브 클래스를 생성한다.문제점 : 구현체별 너무 많은 하위 클래스가 생성된다.2. 가능한 경우에 대한 매개변수 생성방법 : 모든 가능한 경우에 대해 생성자에 매개변수를 추가한다.문제점 : 대부분의 경우 대부분의 매개변수가 사용되지 않는다.3. 빌더 패턴 사용하는 경우방법 : 객체 구성 코드를 빌더라는 개별 객체로 옮긴다.장점 : 필요한 단계만 선택하여 객체를 생성할 수 있다. 구조빌더 : 제품 생성의 공통 단계를 인..

설계/디자인 패턴

[디자인패턴] 생성 패턴 : 추상 팩토리 패턴

생성 - 추상 팩토리 패턴추상 팩토리연관된 여러 객체들을 일관된 방식으로 생성할 때 사용하는 패턴추상 팩토리의 다른 이름은 키트(Kit)이다. 테마 별로 각 구현체 집합을 생성할 수 있다.팩토리 메서드 패턴은 단일 제품(Only one)을 생성하지만, 추상 팩토리 패턴은 여러 제품군을 생성한다. 생성 방법각 제품의 인터페이스를 정의한다.interface Chair { void sitOn();}interface Sofa { void lieOn();}interface CoffeeTable { void putCoffee();}제품들을 생성할 추상 팩토리를 생성한다.생성할 각 제품들의 인터페이스를 참조한다.interface FurnitureFactory { Chair createChair(..

설계/디자인 패턴

[디자인패턴] 생성 패턴 : 팩토리 메서드 패턴

생성 패턴 : 팩토리 메서드 패턴팩토리 메서드 패턴이란?생성과 구현의 분리객체 생성을 위한 인터페이스(or 상위 클래스)를 정의하고, 실제 어떤 클래스가 생성될지는 구현 클래스(or 하위 클래스)가 결정한다.어떤 구현 객체가 실제 생성되었는지 Client는 알지 못한다. (결합도가 낮다.) 팩토리 메서드 패턴이 필요한 이유모든 코드가 특정 객체에 결합도가 높게 작성되었다면, 다른 객체가 해당 객체를 대체하거나 새로운 객체를 포함할 때 많은 코드를 변경해야 한다.공통 로직마다 구현체별로 분기 처리가 필요하다.팩토리 메서드 패턴을 이용하면 Client는 인터페이스만 참조하고 특정 구현체에 종속되어있지 않으므로 확장성이 커진다.새로운 객체가 추가되거나 대체되더라도 인터페이스가 변하지 않는 이상 다른 코드에 영..

mint*
'설계' 카테고리의 글 목록