설계/디자인 패턴

설계/디자인 패턴

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

구조 패턴 - 어댑터어댑터 패턴호환되지 않은 인터페이스가 있는 객체들이 함께 협업할 수 있는 구조 설계 패턴기존 인터페이스를 구현하여 호환이 필요한 객체를 감싸 호환되게 만든다.중간 다리 역할(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는 인터페이스만 참조하고 특정 구현체에 종속되어있지 않으므로 확장성이 커진다.새로운 객체가 추가되거나 대체되더라도 인터페이스가 변하지 않는 이상 다른 코드에 영..

설계/디자인 패턴

[디자인 패턴] 디자인 패턴이란?

디자인 패턴디자인 패턴이란?소프트웨어 설계에서 일반적으로 발생하는 문제에 대한 일반적인 솔루션여러 문제들이 공통된 원인에 의한 것이라면, 패턴을 이용하여 같은 구조로 문제를 해결할 수 있다.ex) 관찰자 패턴을 이용하여 알림이 필요한 모든 상황에 적용하기 단순 개념(blueprint)이며, 고정된 특정 코드가 아니다.한 패턴에 여러 다양한 구현체가 존재할 수 있다.결과와 기능은 정해져있지만, 구현 순서와 방법은 다를 수 있다. 디자인 패턴을 공부하는 것의 장점소프트웨어 설계에서 문제가 발생했을 때 디자인 패턴을 이용해 해결할 수 있다.팀원과 의사소통할 때 디자인 패턴 개념을 공유하면 효율적으로 의사소통할 수 있다. 디자인 패턴을 적용할 때 주의할 부분"프로그램 맥락을 고려하지 않고 패턴을 일반적으로 적용..

mint*
'설계/디자인 패턴' 카테고리의 글 목록