728x90 반응형 Solid8 [디자인패턴] 어댑터(Adapter) 패턴 이해하기 안녕하세요. J4J입니다. 이번 포스팅은 어댑터 (Adapter) 패턴에 대해 적어보는 시간을 가져보려고 합니다. Adapter 패턴이란? adapter 패턴은 사용자가 요구하는 인터페이스 구조에 맞지 않은 클래스를 변환하여 호환되지 않은 서로 다른 인터페이스를 함께 사용할 수 있도록 도와주는 디자인 패턴입니다. 여기서 말하는 adapter는 일상생활에서 쉽게 접할 수 있는 어댑터와 동일한 의미를 가지고 있습니다. 많은 분들이 아시다시피 어댑터라고 하는 것은 서로 구조가 맞지 않은 전자 기기 등이 있을 때 어댑터를 이용하여 호환될 수 있도록 도와주는 것을 말합니다. adapter 패턴도 소스 코드 내부에서 이와 같은 역할을 수행하게 됩니다. 서로 구조가 맞지 않은 인터페이스가 있을 때 adapter .. 2024. 5. 3. [디자인패턴] 데코레이터(Decorator) 패턴 이해하기 안녕하세요. J4J입니다. 이번 포스팅은 데코레이터 (Decorator) 패턴에 대해 적어보는 시간을 가져보려고 합니다. Decorator 패턴이란? decorator 패턴은 객체를 동적으로 유연하게 확장하여 새로운 기능들을 추가하도록 도와주는 디자인 패턴입니다. decorator 패턴에 대해서 가장 쉽게 얘기해 볼 수 있는 것은 특정 객체 자체에는 변화가 없고 단순히 새로운 장식들을 추가해 줘야 되는 상황이라고 말할 수 있습니다. 일상에서 쉽게 생각해볼 수 있는 예시로 햄버거를 구매할 때를 말해보겠습니다. 햄버거를 구매하기 위해 우리가 많이 아는 프랜차이즈 집으로 가게 될 경우 기본적인 햄버거 구성품들이 나열되어 있는 것을 확인할 수 있습니다. 하지만 구매자에 따라 기본 구성이 이루어진 햄버거를.. 2024. 5. 1. [디자인패턴] 옵저버(Observer) 패턴 이해하기 안녕하세요. J4J입니다. 이번 포스팅은 옵저버 (Observer) 패턴에 대해 적어보는 시간을 가져보려고 합니다. Observer 패턴이란? observer 패턴은 객체의 상태 변화를 관찰하는 observer들이 존재하고, observer 들에게 대상 객체의 상태 변화를 통지하는 subject가 존재하는 디자인 패턴을 의미합니다. observer 패턴을 가장 쉽게 이해하기 위해 비교해볼 수 있는 것은 구독입니다. 구독이라고 하는 것은 일정한 주기를 가지고 상품을 구매하는 것을 의미하는데, 이를 observer 패턴에 비유를 해보자면 observer들이 subject라는 상품을 구독하고 있다고 표현해 볼 수 있습니다. 구독이 되어 있기 때문에 subject에 특정 상태 변화가 발생된다면 관련 정보들을.. 2024. 4. 30. [디자인패턴] 추상 팩토리(Abstract Factory) 패턴 이해하기 안녕하세요. J4J입니다. 이번 포스팅은 추상 팩토리 (Abstract Factory) 패턴에 대해 적어보는 시간을 가져보려고 합니다. 관련 글 [디자인패턴] 팩토리 메서드(Factory Method) 패턴 이해하기 Abstract Factory 패턴이란? abstract factory 패턴은 생성해야 되는 객체들 중 관련된 객체들을 서로 묶어 객체들의 집합 군을 생성할 수 있도록 도와주는 디자인 패턴입니다. abstract factory 패턴과 유사하게 비교될 수 있는 디자인 패턴으로 factory method 패턴이 있습니다. 두 디자인 패턴의 차이점에 대해 간단하게 설명해 보면 다음과 같이 얘기해 볼 수 있습니다. abstract factory → 집합 군의 객체들을 생성하기 위해 사용.. 2024. 4. 28. [디자인패턴] 팩토리 메서드(Factory Method) 패턴 이해하기 안녕하세요. J4J입니다. 이번 포스팅은 팩토리 메서드 (Factory Method) 패턴에 대해 적어보는 시간을 가져보려고 합니다. Factory Method 패턴이란? factory method 패턴은 객체 생성을 상위 클래스가 아닌 하위 클래스에서 생성하도록 도와주는 패턴으로 하위 클래스에 의해 어떤 객체가 생성될지 결정되는 디자인 패턴입니다. factory method 패턴을 이해하기 위해선 하위 클래스에서 어떻게 생성을 할 수 있는지를 파악해야 합니다. 일반적으로 특정 객체를 생성하려고 한다면 new 연산자를 이용하여 객체들을 생성할 것입니다. 그리고 서로 다른 객체이지만 동일한 클래스를 사용해야 되는 경우 자연스럽게 다음과 같은 코드가 작성될 것입니다. Product productA = new.. 2024. 4. 22. [객체지향설계] SOLID 설계 원칙 (5) - DIP (의존성 역전 원칙) 안녕하세요. J4J입니다. 이번 포스팅은 solid 설계 원칙 마지막인 dip (의존성 역전 원칙)에 대해 적어보는 시간을 가져보려고 합니다. 이전 글 [객체지향설계] SOLID 설계 원칙 (1) - SRP (단일 책임 원칙) [객체지향설계] SOLID 설계 원칙 (2) - OCP (개방 폐쇄 원칙) [객체지향설계] SOLID 설계 원칙 (3) - LSP (리스코프 치환 원칙) [객체지향설계] SOLID 설계 원칙 (4) - ISP (인터페이스 분리 원칙) DIP (의존성 역전 원칙) 란? solid 설계 원칙에서 dip가 의미하는 것은 고수준 모듈은 저수준 모듈에 의존하지 않고 추상화에 의존해야 된다는 것을 말합니다. 여기서 고수준 모듈과 저수준 모듈은 무엇이며, 추상화에 의존해야 된다는 것은 또 무엇.. 2024. 3. 22. [객체지향설계] SOLID 설계 원칙 (4) - ISP (인터페이스 분리 원칙) 안녕하세요. J4J입니다. 이번 포스팅은 solid 설계 원칙 네 번째인 isp (인터페이스 분리 원칙)에 대해 적어보는 시간을 가져보려고 합니다. 이전 글 [객체지향설계] SOLID 설계 원칙 (1) - SRP (단일 책임 원칙) [객체지향설계] SOLID 설계 원칙 (2) - OCP (개방 폐쇄 원칙) [객체지향설계] SOLID 설계 원칙 (3) - LSP (리스코프 치환 원칙) ISP (인터페이스 분리 원칙) 란? solid 설계 원칙에서 isp가 의미하는 것은 클라이언트는 자신의 목적에 맞는 메서드에만 의존해야 된다는 것을 말합니다. 즉, 자바 관점에서 얘기를 해보면 인터페이스를 활용하여 클래스 내부 메서드를 정의할 때 실제로 클래스 내부에서 사용되는 메서드만 담긴 인터페이스를 활용되어야 한다는 .. 2024. 3. 12. [객체지향설계] SOLID 설계 원칙 (3) - LSP (리스코프 치환 원칙) 안녕하세요. J4J입니다. 이번 포스팅은 solid 설계 원칙 세 번째인 lsp (리스코프 치환 원칙)에 대해 적어보는 시간을 가져보려고 합니다. 이전 글 [객체지향설계] SOLID 설계 원칙 (1) - SRP (단일 책임 원칙) [객체지향설계] SOLID 설계 원칙 (2) - OCP (개방 폐쇄 원칙) LSP (리스코프 치환 원칙) 란? solid 설계 원칙에서 lsp가 의미하는 것은 자료형 A가 자료형 B의 서브 타입이라면 다른 수정 사항 없이 A를 B로 대체할 수 있어야 되는 것을 말합니다. 즉, 자바 관점에서 얘기를 해보면 A 클래스가 B의 클래스에 상속되어 있는 관계일 때 다른 소스 코드의 변경 없이 A를 B로 변경했을 때 동일한 동작을 수행해야 된다는 것입니다. 자바 관점에서 lsp는 결국 상.. 2024. 3. 9. 이전 1 다음 728x90 반응형