Architecture

[Clean Architecture 정리] 24장. 부분적 경계

테리는당근을좋아해 2022. 9. 6. 01:55

24장. 부분적 경계

아키텍처 경계를 완벽하게 만드는 것에는 많은 비용이 든다.

쌍방향의 다형적 인터페이스, 컴포넌트 간 입출력을 위한 데이터 구조, 독립적인 컴포넌트의 배포와 의존성 관리는 비용이 많이 드는 작업이다.

컴포넌트를 분리함에 있어 YAGNI(You Aren't Going to Need it) 원칙에 위배되는 선행적인 설계는 부분적인 경계(partial boundary)를 적용할 수 있다.

 

 

단일 컴포넌트

부분적 경계를 만드는 첫번째 방법은 독립적인 컴포넌트를 위한 작업(쌍방향의 다형적 인터페이스, 컴포넌트 간 입출력을 위한 데이터 구조 등)을 수행하지만 단일 컴포넌트에 배포하는 것이다.

이 방법을 적용하면 다수의 컴포넌트를 관리할 비용은 줄어들지만, 완벽한 경계를 위한 사전 작업에 드는 비용은 적지 않다.

 

 

일차원 경계

부분적 경계를 만드는 두번째 방법은 전략 패턴(strategy pattern) 등을 적용해 쌍방향 경계가 아닌 일차원 경계를 두는 것이다.

클라이언트와 구현 클래스 간 경계를 만들어 미래에 컴포넌트를 분리할 수 있는 기반을 만들었지만, 쉽게 무너질 수 있는 경계이다.

 

https://dheldh77.tistory.com/entry/%EC%A0%84%EB%9E%B5Strategy-%ED%8C%A8%ED%84%B4

 

전략 패턴 (Strategy Pattern)

전략(Strategy) 패턴 예제 public class Calculator { public int calculator(boolean firstGuest, List items) { int sum = 0; for (Item item : items) { if (firstGuest) sum += (int) (item.getPrice() * 0.9)..

dheldh77.tistory.com

 

 

퍼사드

일차원 경계를 만드는 것보다 더 간단한 방법은 퍼사드 패턴(Facade pattern)을 이용한 방법이 있다.

퍼사드 패턴은 의존성 역전도 적용되지 않으며 퍼사드 클래스만으로 간단히 정의된다.

퍼사드 클래스에 선언된 메서드는 다른 각기 다른 구현 클래스에서 정의하며, 퍼사드 클래스는 메서드 호출을 구현 클래스에 전달하는 역할을 수행한다.

클라이언트 코드가 구현 클래스에 직접 접근하진 않지만, 추이 종속성을 가지게 된다.

 

https://dheldh77.tistory.com/entry/%ED%8C%8C%EC%82%AC%EB%93%9C-%ED%8C%A8%ED%84%B4Facade-Pattern

 

파사드 패턴(Facade Pattern)

파사드 패턴(Facade Pattern) 파사드 패턴은 어떤 소프트웨어의 다른 커다란 코드 부분에 대한 간략화된 인터페이스를 제공하는 객체 파사드 패턴은 서브 시스템을 감춰 주는 상위 수준의 인터페이

dheldh77.tistory.com

 

 

부분적 경계를 만드는 방법은 여러가지가 있지만, 선행적인 설계를 수행하기위한 비용이 부담스럽다면, 상황에 따라 장단점을 명확히 알고 적절한 방법을 채택해야 한다.

 

서적 : http://www.yes24.com/Product/Goods/77283734

 

클린 아키텍처 - YES24

살아있는 전설이 들려주는 실용적인 소프트웨어 아키텍처 원칙『클린 코드』와 『클린 코더』의 저자이자 전설적인 소프트웨어 장인인 로버트 C. 마틴은 이 책 『클린 아키텍처』에서 이러한

www.yes24.com