Category: Design Pattern

퍼사드와 미디에이터 패턴

퍼사드 패턴퍼사드는 외관, 건물의 정면을 의미한다.퍼사드 패턴은 복잡하고 일반적인 인터페이스를 가진 객체 그룹을 간단하고 구체적인 인터페이스를 제공한다. DB를 활용하기 위해 java.sql 패키지의 복잡한 인터페이스를 가진 객체들을 상위 모듈에서 사용하기는 어렵다.이를 위해 퍼사드 역할을 하는 객체를 만들 수 있다. Application 입장에는 java

커맨드와 액티브 오브젝트 패턴

커맨드 패턴123public interface Command { void do();} 여러 행동을 호출해야 하는 경우 여러 행동을 커맨드로 추상화하여 사용하는 쪽에서는 커맨드가 어떻게 행동하는 지 관심없이 사용하기만 하도록 구현하는 패턴이다.이 패턴은 커맨드를 사용하는 쪽에서 커맨드를 실행하기 위해서 어떤 객체가 사용되는지 알아지

9. 템플릿 메서드 패턴

템플릿 메서드 패턴템플릿 메서드 패턴은 특정 역할의 책임을 한 메서드에 여러 메서드를 조합*(이게 템플릿!)*으로 정해놓는 패턴이다. 템플릿 메서드를 구성하는 메서드들은 역할에 속하는 객체마다 다르게 구현될 수 있다. 활용 예시우리는 여러 DB에 연결해야 한다. 우리가 연결한 DB는 모두 다음과 같은 절차를 따른다고 하자.해당 DB드라이버 찾기 - DB에

8. 상태 패턴

상태 패턴객체의 특정 상태에 따라 객체의 행동이 달라지는 상황에서,객체의 상태를 본인이 체크해서 행동을 달리하는 것이 아니라,상태를 객체화해서 상태가 행동을 책임지도록 위임하는 패턴. 특정 상태를 캡슐화하는 인터페이스를 선언하고,원래 객체에서 해당 인터페이스를 구성하도록 설계한다. 상태 인터페이스를 구현한 여러 상태 객체들을 만들어서 활용한다. 활용 예시자

7. 어댑터 패턴

어댑터 패턴한 클래스의 인터페이스를 사용하고자 한 다른 인터페이스로 변환한다.쓰고자 하는 인터페이스를 구현한 클래스에 바꾸고 싶은 클래스의 객체를 구성한다. 닭과 오리를 만들어서 날고 울 수 있게 하고 싶다.그러나 두 객체의 행동이 약간 다르다. 1234public interface Chicken { void kokkio(); void

6. 싱글톤 패턴

싱글톤 패턴인스턴스가 하나 뿐인 객체를 만드는 패턴!어디서든 그 인스턴스에 접근할 수 있게하는 패턴! 왜 쓰는가?굳이 여러개가 필요 없는 클래스의 객체가 여러개 생기면 메모리를 불필요하게 차지하게 된다.이런 클래스들의 객체를 하나로 유지하도록 설계해서 메모리를 효율적으로 사용하게 한다. 혹은 설정이나 보안같이 중요한 내용을 담는 클래스는 여러개의 객체를 만

5. SOLID 원칙

SOLID확장과 유지보수를 쉽게 만드는 객체지향 프로그래밍 설계의 다섯가지 원칙. S : 단일 책임 원칙(SRP)한 설계 부품(클래스, 함수..)는 하나의 책임만 가져야 한다.약은 약사에게 진료는 의사에게…한 부품에 여러 기능이 있으면, 내부 메소드들이 의지하는 부분이 많아진다.즉 결합도가 높아지고, 그 부품에 대한 책임 높아진다. -> 유지보수가 힘

4. 팩토리 패턴

Circle c = new Circle(origin, 1);이 코드는 DIP를 위반한다. 구체 클래스에 의존하기 때문이다. 사실 new 키워드를 쓰는 순간 구체 클래스에 의존하게 되며 해당 구체 클래스의 변경에 취약해진다. 다만 해당 구체 클래스가 쉽게 변경되지 않는다면 큰 문제가 되지 않을 수 있다 팩토리 패턴을 사용하면 추상 인터페이스에만 의존해서 구체

3. 데코레이터 패턴

데코레이터 패턴동적으로 객체에 부가적인 책임을 더하는 패턴.상속으로 확장하는 것이 아닌, 객체들의 결합으로 역할을 확장한다.특히 원본 코드에 영향을 주지 않고 기능을 추가할 수 있다!!!하지만 각 데코레이터마다 클래스를 만들어줘야 한다. 그래서 같은 기능을 서로 다른 여러 클래스에 적용하려면 매번 새로운 클래스를 만들어 줘야 한다.(이를 해결하기 위한 동적

2. 옵저버 패턴

옵저버 패턴하나의 객체(서브젝트)가 변할 때, 자동으로 다른 여러 객체들(오브젝트)에게 영향을 동적으로 반영하는 일대다 관계 패턴이때 여러 오브젝트가 추가 될 수 있어야 한다. 배울 내용 요약 1. 서로 상호작용하는 객체들은 느슨하게 연결되어야 한다. 예제로 알아보자. NBA사무국에서는 선수들의 정보를 관리하고 있다.NBA방송국 NBC, TNT에서는

1. 전략 패턴

전략 패턴변경 가능하고 독립적인 알고리즘의 구성으로 만든 패턴 특징 특정한 계열의 알고리즘을 정의 각 알고리즘을 캡슐화 이 알고리즘들을 해당 계열 안에서 상호 교체 가능 배울 내용 요약 1. 다양하게 변화할 법한 내용은 캡슐화하자.2. 구현이 아닌 인터페이스로 프로그래밍하자.3. 상속보다는 구성(IS-A, HAS-A, 구현을 구분하라) IS-A