본문 바로가기

Software Architecture/Design Pattern5

[Design] 결합도(Coupling) 결합도(Coupling) 커플링은 서로 다른 모듈이나 클래스가 얼마나 강하게 연결되어 있는지를 나타내는 개념입니다. 즉 서로 상호 작용하는 시스템들간의 의존성을 나타내며 모듈 간의 독립성 정도를 나타내는 지표입니다. Tight Coupling 두 요소가 강하게 결합되어 있다는 것은 한 요소가 다른 요소의 내부 동작에 의존하거나 직접 접근하는 상태를 말합니다. 이런 상태에서는 한 요소의 변경은 다른 요소에 직접적인 영향을 미치고 다른 요소에 대한 많은 변경을 요구하게 됩니다. Tight Coupling은 다른 오브젝트에 대한 상당히 많은 정보를 필요로 하고 보통 두 객체간의 인터페이스들에게 서로 높은 의존성을 가지고 있습니다. Loose Coupling 두 요소가 느슨하게 결합되어 있다는 것은 한 요소가 .. 2023. 8. 18.
[GoF] 파사드 패턴(Facade Pattern) Facade Pattern 파사드 패턴(Facade Pattern)은 Gang of Four(GoF) 디자인 패턴 중 하나로 Design Patterns: Elements of Reusable Object-Oriented Software 책에서 소개 된 23가지 디자인 패턴 중 하나입니다. 파사드 패턴은 구조 패턴으로써 하위 시스템을 보다 쉽게 사용할 수 있게 해주는 고급 인터페이스로 표현됩니다. 먼저 파사드(Facade)는 프랑스어 Façade 에서 유래된 단어로 건물의 '외관'이라는 뜻입니다. 하위 시스템(내부 구조)에 있는 인터페이스들에 대한 통합된 고급 인터페이스(외벽)를 제공하는 패턴입니다. 이로써 내부 시스템의 복잡도를 감추기 위해 복잡한 기능을 감싸고 상호 작용할 더 단순한 메소드를 제공하는.. 2023. 8. 17.
[GoF] 어댑터 패턴(Adapter Pattern) Adapter Pattern 어댑터 패턴(Adapter Pattern)은 Gang of Four(GoF) 디자인 패턴 중 하나로 Design Patterns: Elements of Reusable Object-Oriented Software 책에서 소개 된 23가지 디자인 패턴 중 하나입니다. 어댑터 패턴은 구조 패턴으로써 인터페이스를 사용자가 기대하는 다른 인터페이스로 변환하는 패턴으로 호환되지 않는 인터페이스 때문에 함께 동작할 수 없는 인터페이스들이 함께 작동할 수 있도록 변환해주는 디자인 패턴입니다. 이는 인터페이스가 현재의 시스템과 호환되지 않는다고해서 현재의 시스템을 변경을 해야하는 것이 아닌 새로운 소스 코드 수정 없이 함께 작동하도록 만들어주는 것에 의미가 있습니다. 어댑터 패턴은 주로 다.. 2023. 8. 10.
[GoF] 템플릿 메소드 패턴(Template Method Pattern) Template Method Pattern 템플릿 메소드 패턴(Template Method Pattern)은 Gang of Four(GoF) 디자인 패턴 중 하나로 Design Patterns: Elements of Reusable Object-Oriented Software 책에서 소개 된 23가지 디자인 패턴 중 하나입니다. 템플릿 메소드 패턴은 행동 패턴으로써 특정 알고리즘을 사용하는 유사한 클래스들의 알고리즘의 구조를 정의하고, 하위 클래스에서는 구조를 변경하지 않고 특정 단계 메소드들을 구체화하여 해당 구조를 표현하기 위해서 사용됩니다. 이를 통해 클라이언트는 특정 알고리즘 구조(템플릿)를 변경하지 않고 구체 메소드를 확장하거나 재정의할 수 있는 유연성을 제공합니다. 또한 정의된 구조를 제외하고.. 2023. 8. 2.
[GoF] 컴포지트 패턴(Composite Pattern) Composite Pattern 컴포지트 패턴(Composite Pattern)은 Gang of Four(GoF) 디자인 패턴 중 하나로 Design Patterns: Elements of Reusable Object-Oriented Software 책에서 소개 된 23가지 디자인 패턴 중 하나입니다. 컴포지트 패턴은 구조 패턴으로써 객체들을 트리 구조로 구성하는 방법을 제공하며 개별 객체와 복합 객체를 일관된 방식으로 다룰 수 있게 해주고, 객체 간의 전체-부분 계층을 표현할 수 있도록 합니다. 컴포지트 패턴의 주요 아이디어는 단일 객체와 복합 객체를 동일한 인터페이스로 다루기입니다. 이를 통해 클라이언트는 개별 객체와 복합 객체를 구별하지 않고 일관된 방식으로 즉, 클라이언트는 개별 객체든 복합 객체.. 2023. 7. 31.