본문 바로가기

프로그래밍 강의 메모/코딩으로 학습하는 GoF의 디자인 패턴_백기선

(24)
행동 관련 디자인 패턴 > 비지터 패턴(Visitor Pattern) https://inf.run/6Shr 코딩으로 학습하는 GoF의 디자인 패턴 - 인프런 | 강의 디자인 패턴을 알고 있다면 스프링 뿐 아니라 여러 다양한 기술 및 프로그래밍 언어도 보다 쉽게 학습할 수 있습니다. 또한, 보다 유연하고 재사용성이 뛰어난 객체 지향 소프트웨어를 개발할 www.inflearn.com 비지터 패턴 행동 관련 디자인 패턴. 기존 코드를 변경하지 않고 새로운 기능을 추가하는 방법. ※ Double Dispatch를 활용할 수 있다. ※ Double Dispatch Dynamic Dispatch가 2번 발생하는 것으로, Dynamic Dispatch는 런타임 시에 호출해야하는 인스턴스를 확인하여 해당 인스턴스의 메서드를 호출하는 과정. 어떤 인스턴스의 메서드가 호출될 지는 런타임이 ..
행동 관련 디자인 패턴 > 템플릿 콜백 패턴(Template Callback Pattern) https://inf.run/6Shr 코딩으로 학습하는 GoF의 디자인 패턴 - 인프런 | 강의 디자인 패턴을 알고 있다면 스프링 뿐 아니라 여러 다양한 기술 및 프로그래밍 언어도 보다 쉽게 학습할 수 있습니다. 또한, 보다 유연하고 재사용성이 뛰어난 객체 지향 소프트웨어를 개발할 www.inflearn.com 템플릿 콜백 패턴 콜백으로 상속 대신 위임을 사용하는 템플릿 패턴. 상속 대신 익명 내부 클래스 또는 람다 표현식을 활용할 수 있다. 상속을 사용하지 않고 Callback이라는 인터페이스를 사용한다. Callback이라는 인터페이스가 Strategy Pattern처럼 전략을 제공해준다. 계산을 담당하는 로직을 담고있는 메서드 하나를 Callback이라는 인터페이스에 넣어놓는다. 전략 패턴과 다른 ..
행동 관련 디자인 패턴 > 템플릿 메서드 패턴(Template Method Pattern) https://inf.run/6Shr 코딩으로 학습하는 GoF의 디자인 패턴 - 인프런 | 강의 디자인 패턴을 알고 있다면 스프링 뿐 아니라 여러 다양한 기술 및 프로그래밍 언어도 보다 쉽게 학습할 수 있습니다. 또한, 보다 유연하고 재사용성이 뛰어난 객체 지향 소프트웨어를 개발할 www.inflearn.com 템플릿 메서드 패턴 행동 관련 디자인 패턴. 알고리듬 구조를 서브 클래스가 확장할 수 있도록 템플릿으로 제공하는 방법. 추상 클래스는 템플릿을 제공하고 하위 클래스는 구체적인 알고리듬을 제공한다. 읽어오고 처리하고 출력하는 등의 알고리듬 구조를 템플릿으로 제공하는 패턴. 템플릿을 상속받는 서브클래스가 구체적인 로직을 구현한다. 이 패턴은 상속을 사용한다. 템플릿 메서드 패턴의 클래스 다이어그램 A..
행동 관련 디자인 패턴 > 전략 패턴(Strategy Pattern) https://inf.run/6Shr 코딩으로 학습하는 GoF의 디자인 패턴 - 인프런 | 강의 디자인 패턴을 알고 있다면 스프링 뿐 아니라 여러 다양한 기술 및 프로그래밍 언어도 보다 쉽게 학습할 수 있습니다. 또한, 보다 유연하고 재사용성이 뛰어난 객체 지향 소프트웨어를 개발할 www.inflearn.com 전략 패턴 행동 관련 디자인 패턴. 여러 알고리듬을 캡슐화하고 상호 교환 가능하게 만드는 패턴. 컨텍스트에서 사용할 알고리듬을 클라이언트가 선택한다. 어떤 업무를 수행하는 방법이 여러가지일 때, 그 여러 알고리듬을 개별적인 클래스로 캡슐화하고, 캡슐화되어 있는 것을 공통된 인터페이스로 추상화하여, 로직을 수행하는 곳에서는 추상화된 인터페이스만 사용하여, 코드는 바뀌지 않지만, 우리가 사용하는 알고..
행동 관련 디자인 패턴 > 상태 패턴(State Pattern) https://inf.run/6Shr 코딩으로 학습하는 GoF의 디자인 패턴 - 인프런 | 강의 디자인 패턴을 알고 있다면 스프링 뿐 아니라 여러 다양한 기술 및 프로그래밍 언어도 보다 쉽게 학습할 수 있습니다. 또한, 보다 유연하고 재사용성이 뛰어난 객체 지향 소프트웨어를 개발할 www.inflearn.com 상태 패턴 행동 관련 디자인 패턴. 객체 내부 상태 변경에 따라 객체의 행동이 달라지는 패턴. 상태에 특화된 행동들을 분리해 낼 수 있으며, 새로운 행동을 가하더라도 다른 행동에 영향을 주지 않는다. 애플리케이션에서 상태 변경에 따라 어떤 특정한 오브젝트들의 행동이 바뀌는 동작을 스테이트 패턴을 통해 구현할 수 있다. 특정한 상태마다 다르게 동작하는 오퍼레이션을 상태 패턴으로 구현하지 않으면 if..
행동 관련 디자인 패턴 > 옵저버 패턴(Observer Pattern) https://inf.run/6Shr 코딩으로 학습하는 GoF의 디자인 패턴 - 인프런 | 강의 디자인 패턴을 알고 있다면 스프링 뿐 아니라 여러 다양한 기술 및 프로그래밍 언어도 보다 쉽게 학습할 수 있습니다. 또한, 보다 유연하고 재사용성이 뛰어난 객체 지향 소프트웨어를 개발할 www.inflearn.com 옵저버 패턴 행동 관련 디자인 패턴. 다수의 객체가 특정 상태 변화를 감지하고 알림을 받는 패턴. Publish Subscribe 패턴을 구현할 수 있다. 여러 개의 객체들이 어떤 특정한 상태의 변화를 감지하고 반응해야할 때 적용할 수 있는 패턴. 이 패턴을 적용하면 pub-sub 패턴을 쉽게 구현할 수 있다. 주기적으로 가져오는 데 있어서 메시지가 변경되지 않았는데도 리소스가 들어가도록 구현하면..
행동 관련 디자인 패턴 > 메멘토 패턴(Memento Pattern) https://inf.run/6Shr 코딩으로 학습하는 GoF의 디자인 패턴 - 인프런 | 강의 디자인 패턴을 알고 있다면 스프링 뿐 아니라 여러 다양한 기술 및 프로그래밍 언어도 보다 쉽게 학습할 수 있습니다. 또한, 보다 유연하고 재사용성이 뛰어난 객체 지향 소프트웨어를 개발할 www.inflearn.com 메멘토 패턴 행동 관련 디자인 패턴. 캡슐화를 유지하면서 객체 내부 상태를 외부에 저장하는 방법. 객체 상태를 외부에 저장했다가 해당 상태로 다시 복구할 수 있다. 객체 직렬화에서 메멘토 패턴을 활용한다. 어떤 객체의 상태를 밖에 저장하려고 한다면 객체 상태가 외부에 노출이 되어야 한다. 그러나 이처럼 객체의 상태를 외부에 노출시키지 않으면서, 즉 캡슐화시켜 외부에 저장했다가 복원하는 방법이 메멘..
행동 관련 디자인 패턴 > 중재자 패턴(Mediator Pattern) https://inf.run/6Shr 코딩으로 학습하는 GoF의 디자인 패턴 - 인프런 | 강의 디자인 패턴을 알고 있다면 스프링 뿐 아니라 여러 다양한 기술 및 프로그래밍 언어도 보다 쉽게 학습할 수 있습니다. 또한, 보다 유연하고 재사용성이 뛰어난 객체 지향 소프트웨어를 개발할 www.inflearn.com 중재자 패턴 행동 관련 디자인 패턴. 여러 객체들이 소통하는 방법을 캡슐화하는 패턴. 여러 컴포넌트 간의 결합도를 중재자를 통해 낮출 수 있다. 여러 컴포넌트들이 있고 각각의 컴포넌트들이 서로 직접 의사소통을 하고 있다고 가정한다면, 각각의 컴포넌트들이 강하게 결합하게 된다. 이럴경우 코드 구현, 변경, 테스트, 재사용하기 모두 어렵다. 모든 Colleague들은 Mediator 인터페이스를 참조..