DesignPattern

DesignPattern에 대해 공부한 기록을 남깁니다.

빌더 패턴

실무에 적용되는 builder pattern

Builder pattern Builder는 복잡한 객체들을 단계별로 생성할 수 있도록 하는 생성 디자인패턴 예를 들어, 집을 만들 때, House 클래스를 확장하고, 매개ㅐ변수의 모든 조합 (난방, 배관, 뒤뜰, 지붕 등)을 포함하는 자식 클래스들의 집합을 만들 수 있다. 그렇지만, 상당 수의 자식 클래스를 만들게 되고, 새로 추가할 때마다 계...

어댑터 패턴

호환성 높이기

adapter pattern 호환되지 않는 인터페이스를 가진 객체들이 협업할 수 있도록 하는 구조적 디자인 패턴 어댑터는 한 객체의 인터페이스를 다른 객체가 이해할 수 있도록 변환하는 특별한 객체 어댑터는 변환의 복잡성을 숨기기 위하여 객체 중 하나를 래핑(포장)다. 래핑된 객체는 어댑터를 인식하지도 못한다. 작동방식 어댑터는 ...

Gof Design Pattern - 템플릿 콜백

토비의 스프링을 읽고

탬플릿/콜백 복잡하지만 바뀌지 않는 일정한 패턴을 갖는 작업흐름이 존재하고 그 중 일부분만 자주 바꿔서 사용해야 하는 경우에 적합한 구조. 전략 패턴의 기본 구조에 익명 내부 클래스를 활용한 방식 전략 패턴의 컨텍스트를 템플릿이라 부르고, 익명 내부 클래스로 만들어지는 오브젝트를 콜백이라고 부른다. 템플릿 고정된 틀 안에 바꿀...

Gof Design Pattern - 다양한 패턴

HeadFirst Design Pattern을 읽고

🌉 브리지 패턴 Bridge Pattern 브리지 패턴: 구현과 추상화 부분까지 변경하고자 할 때 사용 🌉 브리지 패턴의 장점 구현과 인터페이스를 완전히 결합하지 않았기 때문에 구현과 추상화 부분을 분리할 수 있다. 추상화된 부분과 실제 구현 부분을 독립적으로 확장할 수 있다. 추상화 부분을 구현한 구상 클래스가 바뀌어도 클라이언트...

Gof Design Pattern - 복합 패턴

HeadFirst Design Pattern을 읽고

✏️ 복합 패턴 복합패턴: 반복적으로 생길 수 있는 일반적인 문제를 해결하는 용도로 2개 이상의 패턴을 결합해서 사용하는 것 오리가 우는 것을 구현한 Quackable 인터페이스를 만든다. 거위도 Quackable 인터페이스를 구현해서 소리내고 싶다. ✅ 어댑터 패턴으로 거위를 Quackable에 맞게 만들어줌 ...

Gof Design Pattern - 실전 디자인 패턴

HeadFirst Design Pattern을 읽고

✏️ 실전 디자인 패턴 패턴: 특정 컨텍스트 내에서 주어진 문제의 해결책 컨텍스트: 패턴이 적용되는 상황. 반복적으로 일어날 수 있는 상황이어야만 한다. 문제: 컨텍스트 내에서 이뤄야 하는 목표. 컨텍스트 내의 제약조건도 포함 해결책: 우리가 찾아내야 하는 것. 제약조건 속에서 누가 적용해도 목표를 이룰 수 있는 일반적인 디자인 ...

Gof Design Pattern - 프록시 패턴

HeadFirst Design Pattern을 읽고

✏️ 프록시 패턴 Proxy Pattern 프록시 패턴 : 특정 객체로의 접근을 제어하는 대리인(특정 객체를 대변하는 객체) 제공 프록시 패턴을 사용하면 원격 객체, 생성하기 힘든 객체, 보안이 중요한 객체와 같은 다른 객체로의 접근을 제어하는 대리인 객체를 만들 수 있다. 원격 프록시를 써서 원격 객체로의 접근을 제어할 수 있다. 가...

Gof Design Pattern - 반복자 패턴, 컴포지트 패턴

HeadFirst Design Pattern을 읽고

✏️ 반복자 패턴 Iterator Pattern 반복자 패턴 : 컬렉션의 구현 방법을 노출하지 않으면서 집합체 내의 모든 항목에 접근하는 방법을 제공함. 반복자 패턴을 사용하면 각 항목에 일일이 접근할 수 있게 해주는 기능을 집합체가 아닌 반복자 객체가 책임진다는 장점이 있다. 반복자 객체와 집합체의 기능이 분리되면 집합체 인터페이스와 구...

Gof Design Pattern - 템플릿 메소드 패턴

HeadFirst Design Pattern을 읽고

✏️ 템플릿 메소드 패턴 Template Method Pattern 템플릿 메소드 패턴 : 알고리즘의 골격을 정의한다. 알고리즘의 일부 단계를 서브클래스에서 구현할 수 있으며, 알고리즘의 구조는 그대로 유지하면서 알고리즘의 특정 단계를 서브클래스에서 재정의할 수도 있다. 알고리즘의 틀(템플릿)을 만들고, 그 클래스에서 알고리즘을 독점하여 ...

Gof Design Pattern - 싱글턴 패턴

HeadFirst Design Pattern을 읽고

✏️ 싱글턴 패턴 Singleton Pattern 싱글턴 패턴 : 클래스 인스턴스를 하나만 만들고, 그 인스턴스로의 전역 접근을 제공하는 패턴. 🔂 싱글턴 패턴 구현법 클래스의 하나뿐인 인스턴스를 저장하는 정적static 변수 private으로 생성자 선언. 해당 클래스에서만 클래스의 인스턴스를 만들 수 있음 public getIns...

Gof Design Pattern - 팩토리 패턴 (팩토리 메소드, 추상 팩토리)

HeadFirst Design Pattern을 읽고

✏️ 팩토리 패턴 Factory Pattern ‘new’연산자를 사용하면 구상 클래스의 인스턴스가 만들어진다. 구상 클래스를 바탕으로 코딩하면 나중에 수정해야 할 가능성이 커지고 유연성이 떨어진다. 다형성을 활용하면 시스템에서 일어날 수 있는 여러 변화에 대처할 수 있다. 구현해야 하는 클래스에 implements해서 사용할 수 있기 때문이...

Gof Design Pattern - 전략패턴

HeadFirst Design Pattern을 읽고

✏️ 전략패턴 Strategy Pattern 전략패턴: 알고리즘군을 정의하고 캡슐화해서 각각의 알고리즘군을 수정해서 쓸 수 있게 해준다. 클라이언트로부터 알고리즘을 분리해서 독립적으로 변경할 수 있게 된다. 예제: 오리 시뮬레이션 게임 만들기 🐥 1. Duck 슈퍼 클래스를 상속받은 다양한 유형의 오리 만들기 1 2 3 4 5 6 7 8...