Home
동준이 블로그
Cancel

[Design Pattern] 팩토리 메서드 패턴

객체를 생성하기 위해 인터페이스를 정의하지만, 어떤 클래스의 인스턴스를 생성할지에 대한 결정은 서브클래스가 내리도록 하는 패턴 팩토리 메소드 패턴은 생성 패턴 중 하나로 이 패턴이 언제 적용 되는지 알기 위해 사과를 디저트로 제공하는 식당 클래스로 예를 들어보자 Apple public abstract class Apple { publi...

[Design Pattern] 추상 팩토리 패턴

구체적인 클래스를 지정하지 않고 관련성을 갖는 객체들의 집합을 생성하거나 서로 독립적인 객체들의 집합을 생성할 수 있는 인터페이스를 제공하는 패턴 엘레베이터 부품 업체 변경하는 문제로 예를 들어보자. 엘레베이터를 구성하는 많은 부품들 중에서 모터와 문이 있다고 하자. LG라는 회사는 LG모터와 LG문을 제공하고, 현대는 현대 모터와 현대문을 제공한다...

[Design Pattern] 템플릿 메서드 패턴

객체의 연산에는 알고리즘의 뼈대만 정의하고 각 단계에서 수행할 구체적 처리는 서브클래스 쪽으로 미룬다. 알고리즘의 구조 자체는 그대로 놔둔 채 알고리즘 각 단계를 서브 클래스에서 재정의할 수 있게 해주는 패턴 템플릿 메소드 패턴이 어떻게 적용 되는지 알기 위해 엘레베이터 제어 시스템에서 모터를 구동시키는 기능을 예로 들어 보자 현재 모터를 이용하는...

[Design Pattern] 데코레이터 패턴

데코레이터 패턴은 기본 기능에 추가할 수 있는 기능의 종류가 많은 경우에 각 추가 기능을 Decorator 클래스로 정의한 후 필요한 Decorator 객체를 조합함으로써 추가 기능의 조합을 설계하는 방식 데코레이터 패턴을 이해하기 위해 예를 들어보자 네비게이션에 도로를 표시하는 기능을 생각해보자. 여기서 기본 기능은 도로를 간단한 선으로 표시하는...

[Design Pattern] 옵서버 패턴

옵서버 패턴은 객체 사이에 일 대 다의 의존 관계를 두어, 어떤 객체의 상태가 변할 때 그 객체에 의존성을 가진 다른 객체들이 그 변화를 통지받고 자동으로 갱신될 수 있게 만드는 패턴 옵서버 패턴이 언제 쓰면 유용한지 알아보기 위해 성적 출력 프로그램으로 예를 들어보자. 성적 출력 프로그램은 점수를 목록 형태로 출력하는 구조를 가지고 있다. ...

[Design Pattern] 커멘드 패턴

커맨드 패턴은 이벤트가 발생했을 때 실행될 기능이 다양하면서도 변경이 필요한 경우에 이벤트를 발생 시키는 클래스를 변경하지 않고 재사용하고자 할때 사용하는 패턴 🚴🏼 눌리면 특정 기능을 수행하는 버튼의 예를 들어보자 버튼을 눌렀을 때 램프의 불이 켜지는 프로그램을 개발하려면 버튼이 눌러졌음을 인식하는 Button 클래스, 불을 켜는 기능을 제공하는...

[Design Pattern] 스트래티지 패턴

스트래티지 패턴은 전략을 쉽게 바꿀 수 있도록 해주는 디자인 패턴이다. 여기에서 전략이란 문제를 해결하는 알고리즘으로 이해할 수 있다. 같은 문제를 해결하는 여러 알고리즘이 클래스 별로 캡슐화 되어 있고 이들이 필요할 때 교체할 수 있도록 함으로써 동일한 문제를 다른 알고리즘으로 해결할 수 있게 하는 디자인 패턴 Robot 클래스로 예를 들...

[Design Pattern] 빌더 패턴

빌더 패턴은 복잡한 객체를 생성하는 방법과 표현하는 방법을 정의하는 클래스를 별도로 분리하여 서로 다른 표현이라도 이를 생성할 수 있는 동일한 절차를 제공하는 패턴 book 클래스를 예로 들어 살펴보자 생성자의 인자가 많을 경우 일반적인 객체를 생성하는 방식은 다음과 같다. Book(Telescoping Constructor pattern) p...

[Design Pattern] 싱글톤 패턴

싱글턴 패턴은 인스턴스가 오직 하나만 생성되는 것을 보장하고 어디에서든 이 인스턴스에 접근할 수 있도록 하는 디자인 패턴 싱글턴 패턴이 왜 쓰는지 알기 위해 예를 통해 살펴보자 ex) 공통 로그 파일에 모든 사용자 계좌의 입금/출금의 발생 내역을 기록 Account, Logger 클래스 Account public class Account {...

[Design Pattern] SOLID 원칙

로버트 마틴이 주장한 5가지의 설계원칙 SRP(Single Responsbility Principle) 객체지향 설계 관점에서는 SRP에서 말하는 책임의 기본 단위는 객체를 말한다. 즉, 객체는 단 하나의 책일만 가져야 한다는 의미다. 책임이란? → 해야 하는 것, 할 수 있는것으로 객체에 책임을 할당할 때는 어떤 객체보다도 작업을 잘할 수 있...