본문 바로가기

디자인패턴

[디자인 패턴] 전략 패턴 Strategy Pattern 📌 Strategy pattern 전략 패턴으로 불리며, 객체 지향의 꽃이다. 유사한 행위들을 캡슐화하여, 객체의 행위를 바꾸고 싶은 경우 직접 변경하는 것이 아닌 전략만 변경하여 유연하게 확장하는 패턴 SOILD 중에서 개방 폐쇄 원칙과 의존 역전 원칙을 따른다. Strategy Pattern 에서는 이것들이 필요하다. 전략 메서드를 가진 전략 객체 전략 객체를 사용하는 컨텍스트 전략 객체를 생성해 컨텍스트에 주입하는 클라이언트 인코딩을 전략패턴을 이용해보자. 라인 리딩 13 전략객체를 사용하는 컨텍스트 생성 16,18,31 전략 메서드를 가진 전략 객체 생성 23,27,31 컨텍스트에 전략 객체 세팅 (31 은 전략객체 생성과 컨텍스트에 세팅을 한꺼번에 진행) 24,28,32 메세지를 세팅해놓은 컨텍.. 더보기
[디자인패턴] 파사드 패턴 Pasade Pattern 📌 Facade pattern Facade 는 건물의 앞쪽 정면이라는 뜻을 가진다. 여러 개의 객체와 실제 사용하는 서브 객체의 사이에 복잡한 의존관계가 있을 때, 중간에 facade 라는 객체를 두고, 여기서 제공하는 interface만을 활용하여 기능을 사용하는 방식이다. 단, Facade는 자신이 가지고 있는 각 클래스의 기능을 명확히 알아야 한다. 이처럼 파사드 패턴은 여러 개의 객체를 합쳐서 기능을 만들때 사용한다. 직접 살펴보자. 먼저, 파사드 패턴을 이용하지 않고 구현해보자. 이제는 pasade 패턴을 이용해보자. 9-13 Ftp, Reader, Writer 에서 필요한 변수들을 SftpClient 클래스 생성자로 만든다 => SftpClient 에서는 Ftp, Reader, Writer의 .. 더보기
[디자인패턴] 데코레이터 패턴 Decorator Pattern 📌 Decorator pattern 기존 뼈대(클래스)는 유지하되, 이후 필요한 형태로 꾸밀 때 사용한다. 확장이 필요한 경우 상속의 대안으로도 활용한다. SOLOD 중에서 개방폐쇄 원칙(OCP)과 의존 역전 원칙(DIP)를 따른다. 에스프레소에 추가되는 우유, 물, 시럽 처럼 어떤걸 첨가하냐에 따라서 다른 무엇이 되는 원리와 비슷하다. 이 예로 알아보기 https://github.com/6161990/TIL/blob/main/DesignPattern/Decorator%20Pattern.md Audi의 모델들을 예로 들어보자 ICar 인터페이스를 만들고 Audi가 그것을 구현하고 Main에서 돌려보면 다음과 같은 결과가 나온다. 여기에서 Audi 모델들을 다양하게 추가해보자면, 우선 데코레이터 클래스를 .. 더보기
[디자인패턴] 어뎁터 패턴 Adapter Pattern 📌 어뎁터 패턴 Adapter Pattern Adapter Pattern 에서는 실생활에서 많이 쓰이는 어뎁터를 떠올리면 된다. 흔히 돼지코라고 불리는데 100v를 200v로 변경해주거나, 그 반대로 해주는 변환기를 뜻한다. 📍 어뎁터 패턴의 원칙호환성이 없는 기존 클래스의 인터페이스를 변환하여 재사용 할 수 있도록 한다. SOLID 중에서 개방 폐쇄 원칙OCP를 따른다. ❗ Main 클래스 12 HairDryer hairDryer = new HairDryer(); // 110v 구현 클래스 생성 connect(hairDryer); 15 Cleaner cleaner = new Cleaner(); 16 connect(cleaner); 오류가 뜬다. connect()은 매개변수로 Electronic110v만.. 더보기
[디자인패턴] Design Pattern 의 효용과 종류 📌 Design Pattern 의 효용 자주 사용하는 설계 패턴을 정형화해서 이를 유형별로 가장 최적의 방법으로 개발을 할 수 있도록 정해둔 설계. 알고리즘과 유사하지만, 명확하게 정답이 있는 형태는 아니며, 프로젝트의 상황에 맞추어 적용 가능하다. A식으로 로직을 구성하면 템플릿 메소드 패턴. B식으로 로직을 구성하면 옵저버 메소드 패턴. : 해결하려는 문제가 무엇이느냐에 따라서 그에 적당한 구조를 선택해 사용한다. 📍 Gof 디자인 패턴 소프트웨어를 설계 할 때는 기존의 경험이 매우 중요하다. 사람들이 개발을 하면서 축적되온 지식와 패턴들을 공유하기 위해서 나온 것이 Gang of Four 의 디자인 패턴이다. 객체지향 개념에 따른 설계 중 재사용할 경우 유용한 설계를 디자인 패턴으로 정리해 둔 것이.. 더보기